gpt4 book ai didi

ruby - Ruby 1.9 中的 Lambda

转载 作者:数据小太阳 更新时间:2023-10-29 07:26:20 27 4
gpt4 key购买 nike

我没有关注 this change .来自:

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'

绕过不太漂亮的语法的一个好方法是使用新的 Shiny 的 Stab 运算符 tm:

cl = ->(a, b, c) { b }

关于ruby - Ruby 1.9 中的 Lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5525572/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com