4
我不是以下this change。來源:Ruby 1.9中的Lambda
longest_path_first = lambda do |host, location, _, _|
要:
longest_path_first = lambda do |(host, location, _, _)|
有人能解釋一下嗎?
我不是以下this change。來源:Ruby 1.9中的Lambda
longest_path_first = lambda do |host, location, _, _|
要:
longest_path_first = lambda do |(host, location, _, _)|
有人能解釋一下嗎?
>> al = lambda { |a,b,c| b }
>> bl = lambda { |(a,b,c)| b }
>> list = [[1,1,1], [2,2,2], [3,3,3], [4,0,4]]
>> list.sort_by &al
ArgumentError: wrong number of arguments (1 for 3)
from (irb):1:in `block in irb_binding'
from (irb):4:in `each'
from (irb):4:in `sort_by'
>> list.sort_by &bl
=> [[4, 0, 4], [1, 1, 1], [2, 2, 2], [3, 3, 3]]
一種說明他們爲什麼這樣做。
在Ruby中的變化的原因是,他們正在試圖與常規方法lambda表達式是一致的:
>> def test(a,b,c); b; end
>> test [1,2,3]
ArgumentError: wrong number of arguments (1 for 3)
from (irb):16:in `test'
一個好辦法來解決的不完全漂亮的語法使用新的和有光澤刺運營商tm:
cl = ->(a, b, c) { b }