gpt4 book ai didi

ruby - lambda 的缺点是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 17:08:51 25 4
gpt4 key购买 nike

我经常喜欢这样做:

a, b = lambda do |data|
[f1(data), f2(data)]
end.call(some_function(some_data))

而不是这个:

data = some_function(some_data))
a, b = f1(data), f2(data)

或者这个:

a, b = f1(some_function(some_data)), f2(some_function(some_data))

对几乎每件事都使用 lambda 是否有任何负面影响?

最佳答案

主要结果是 Ruby 程序员不是特别习惯于这样做。社区成员、您团队的其他成员、 future 的维护者等都可以更轻松地阅读您的任一替代方案。

次要后果是以这种方式创建一次性 lambda 函数将比调用静态函数慢。创建 lambda 无论如何都不会特别慢,但它仍然比不使用它们慢。如果你经常这样做,它就会开始累加起来。为了提供一些背景信息,creating an empty lambda takes about 10 times longer to create than an empty array .因此,如果您重复执行此操作(例如,在反复使用的函数调用中),这种差异可能会加起来。

最后,至少还有一种方法可以做到这一点。我敢肯定还有其他一些人...

a, b = [:f1, :f2].collect { |fn| send(fn, some_function(some_data)) }

不过,总而言之,我认为您的第一个选择是最干净的方法:

data = some_function(some_data)
a, b = f1(data), f2(data)

完全清楚你在做什么,而且效率很高。

关于ruby - lambda 的缺点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3967268/

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