Ruby中的 - >(stab)运算符是什么?

0xS*_*ina 46 ruby

在以下示例中:

default: -> { Time.now }
Run Code Online (Sandbox Code Playgroud)

什么->?我很熟悉,=>但我第一次见到->.

Dav*_*ton 57

这是Ruby 1.9"stabby lambda"运算符.例如,请参阅2008年的这篇文章.

概括地说:

> foo2 = ->(arg) { arg*2 }
> foo2.call "now"
 => nownow
Run Code Online (Sandbox Code Playgroud)

注意缺乏之间的间隔->(arg),这是故意的.

  • 实际上,我很确定` - >`和`(arg)`之间的空格不是必需的.刚试过`irb`运行`ruby 1.9.3p484`.不确定早期版本中是否需要空间.或者,为了清晰起见,您是否将"故意"作为编码风格? (3认同)
  • @zealoushacker正确:-) IMO离开Parens更令人困惑,但这不是一个技术论证,而是一个风格的,所以我不打扰争论那些. (3认同)
  • 啊,哎呀,我明白了.使用parens时,需要空间,但父母本身并不需要.所以`foo2 = - > arg {arg*2}`将是有效的语法. (2认同)