basyura's blog

あしたになったらほんきだす。

lambda

ブロックをコンテキスト(ローカル変数のスコープやスタックフレーム)とともにオブジェクトにする

def c_lambda
  c = 10
  lambda {|a,b| return a * b * c}
end
puts c_lambda.call(3,4) #=> 120

中身が変えられると困る様なものはあらかじめ dup(または freeze)しておけばいい?

def c_lambda2(map)
  map = map.dup
  lambda{map}
end
m = {"a" => "A"}
l = c_lambda2(m)
m["a"] = "B"
p l.call #=> {"a" => "A"}

組み込みクラスの一覧は赤に比べて青は探しにくいんだよなぁ。だからと言って良い案は無いんだけど。アルファベット順より継承構造でどの辺にあるって分かる方がいいのかも。