marg-do's

関数型生活

2014-03-01から1ヶ月間の記事一覧

for...in文とeachイテレータのスコープ

array = [1,2,3,4,5] for x in array puts x end array.each do |y| puts y end puts x #=>5 puts y #=>エラーを返す eachメソッド内のブロックは独自のスコープを持つ

Rangeオブジェクトにおけるcase等値演算子の定義とcase文

Rangeオブジェクトにおいてcase等値演算子(===)は以下のように定義される。 左辺(Rangeオブジェクト)が示す範囲内に右辺の値が属していればtrue、それ以外はfalse。 (1..10) === 4 #=> true (1..10) === 10 #=> true (1..10) === 10.1 #=> false case文にお…

入力した文字の文字数を返す

C

#include <stdio.h> #define EOL 10 int main() { int c, length = 0; c = getchar(); while (c != EOF) { if (c == EOL) { printf("%d\n", length); length = 0; } else { length = length + 1; } c = getchar(); } return 0; } getcharは、入力ストリームに文字が存</stdio.h>…

論理演算子&&を定義してみる

class Object def myand(x) if self == nil false elsif self == false false else if x == nil false elsif x == false false else x end end end end a = 5 b = nil a.myand(b) #=> nil (a&&bと同じ役割) 絶対もっと上手い書き方ありますが…。 内部では…

論理演算子||による式の評価

a = "01234" true || a.reverse! #(1) a #=>"01234" この場合、(1)式の左辺のみで(1)式の評価が決定され、右辺は評価されない。

Rubyが変数とメソッドを区別する瞬間

def a 1 end a #=> 1 (メソッドaの実行) a = 0 if false a #=> nil (変数aの参照) a = 2 a #=> 2 (変数aの参照) 以上のように、Rubyは、変数の定義式が現れた瞬間に、aをメソッドではなく変数への参照として扱い始める。 実際の代入が行われているかど…