options_from_collection_for_select(['all'], 'to_s', -> (input) { t("admin.mystring") })
我在Haml文件中找到了这行代码。有人可以解释->(input)
做什么吗?何时在红宝石中使用此符号->
?
答案 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