ruby - 是否可以将 block 声明为默认值的方法?

标签 ruby lambda block

我想写一个方法,它接受一个 block ,如果没有给定 block ,它应该使用默认 block 。所以我想要这样的东西:

def say_hello(name, &block = ->(name) { puts "Hi, #{name}" })
  # do something
end 

但是当我尝试这样做时,我遇到了语法错误。

我知道我可以使用 block_given? 来解决我的问题.但我对第一种方法感兴趣。 我是不是遗漏了什么或者这是不可能的?

最佳答案

一些答案​​建议使用 block_given?,但是由于给定的 block 不可能是 nilfalse,您可以简单地使用 ||=

def say_hello(name, &block)
  block ||= ->(name){puts "Hi, #{name}"}
  # do something
end

关于ruby - 是否可以将 block 声明为默认值的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20314478/

相关文章:

ios - 基于 UIView block 的动画怪异行为

ruby - Ruby 中的 '&&' 和 '&' 有什么区别

javascript - 设计问题 : client side or server side?

java - 哪个方法引用可以简化这个 lambda (Foo foo) -> foo.getName()?

KotlinPoet - 生成 Koin 模块

java - Future.get 无法阻塞 forkjoinpool/workstealingpool 中的线程

ruby - 正数/负数总和语法错误

css - 在 heroku 上发布部署 rails 应用程序

python - 3 Quicksorts 函数 - 为什么 lambda 版本更慢?提供代码

objective-c - 不总是在 block 中捕获 self (保留周期)?