gpt4 book ai didi

ruby - 确定参数/变量是否为 ("is_a?") lambda?

转载 作者:数据小太阳 更新时间:2023-10-29 06:29:41 25 4
gpt4 key购买 nike

如何检查给定参数是否为 lambda?

def method(parameter)
if ???
puts "We got lambda"
parameter.call
else
puts "I did not get a block"
end
end


method(lambda { 1 })
method(1)

最佳答案

block 不是 lambda。查看是否有 block 使用 block_given? .

无论如何,当且仅当我真的需要这个结构时,我会使用“响应调用”,但我会尽量避免这种情况。 (定义契约并让调用者负责正确调用它!)

 (lambda {1}).respond_to? :call # => true
(1).respond_to? :call # => false

我相信这种形式的结构(aka duck)类型比具有“is a”关系的主格类型更符合Ruby。

要查看"is"关系可能持有什么(为了将来在沙盒中玩):

 RUBY_VERSION           # => 1.9.2
(lambda {}).class # => Proc
(Proc.new {}).class # => Proc
def x (&p); p; end # note this "lifts" the block to a Proc
(x {}).class # => Proc

快乐编码。

关于ruby - 确定参数/变量是否为 ("is_a?") lambda?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9899568/

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