什么是红宝石符号 - >做?

时间:2014-04-14 15:07:46

标签: ruby haml

options_from_collection_for_select(['all'], 'to_s',  -> (input) { t("admin.mystring") })

我在Haml文件中找到了这行代码。有人可以解释->(input)做什么吗?何时在红宝石中使用此符号->

2 个答案:

答案 0 :(得分:6)

  

什么 - >(输入)呢?

->() { .. }被称为staby proc。

  

何时使用此符号 - >在红宝石?

如果要使用Kernel#lambda方法使用Proc对象。 ->() { .. }Kernel#lambda的语法糖。

Ruby 1.9.1 引入了这种新的,更简洁的语法来创建lambda方法。

stab operator因其与刀或刺伤动作的相似性而得名:->。在运算符的stab部分之后,有一个参数列表,就像在普通方法中一样。然后,在大括号中使用普通的Ruby块。

由于lambda的参数列表是形式参数列表,而不是块参数列表,因此支持其他几个功能,例如默认参数值。 lambda 位于匿名块或闭包与正式命名方法之间。

答案 1 :(得分:3)

->运算符是lambda关键字的快捷方式。您可以在此处阅读所有相关信息:http://www.ruby-doc.org/core-2.1.1/Proc.html