我想写一个方法,它接受一个 block ,如果没有给定 block ,它应该使用默认 block 。所以我想要这样的东西:
def say_hello(name, &block = ->(name) { puts "Hi, #{name}" })
# do something
end
但是当我尝试这样做时,我遇到了语法错误。
我知道我可以使用 block_given?
来解决我的问题.但我对第一种方法感兴趣。
我是不是遗漏了什么或者这是不可能的?
最佳答案
一些答案建议使用 block_given?
,但是由于给定的 block 不可能是 nil
或 false
,您可以简单地使用 ||=
。
def say_hello(name, &block)
block ||= ->(name){puts "Hi, #{name}"}
# do something
end
关于ruby - 是否可以将 block 声明为默认值的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20314478/