这不是一项任务。在Ruby中,分配使用赋值运算符=
这样做:
var = val
你可能会想一些Lisp的方言,其中分配是这样的:
(def var val)
这只是一个简单的receiverless消息发送。
在Ruby中,对于消息中发送一般语法是
receiver.selector(argument1, argument2)
但是,如果receiver
是self
,可以去掉的receiver
,所以
selector(argument1, argument2)
相同
self.selector(argument1, argument2)
[注意:这不是真正的tru即在Ruby中,私有方法只能通过无接收方消息发送来调用,因此如果在此示例中self
通过调用私有方法来响应selector
消息,则只有第一个变体将起作用,第二个将引起NoMethodError
例外。]
而且,在没有歧义的情况下,可以去掉围绕参数的括号像这样:
receiver.selector argument1, argument2
如果把两者结合起来,你现在可以看到,
selector argument1, argument2
相当于
self.selector(argument1, argument2)
,从而
from "Some text for this field"
等同于
self.from("Some text for this field")
有一个在Ruby的消息发送语法第三个快捷键:如果最后一个参数的消息发送是一个Hash
文字,那么你可以省略花括号。所以,在上面的例子中的最后一行也可以写成
body :user => user, :url => "http://example.com/login"
另外,在红宝石1.9,一个Hash
字面其中所有键是Symbol
S可使用替代Hash
文本语法被写成:
{ key1: val1, key2: val2 }
是一样的旧的语法
{ :key1 => val1, :key2 => val2 }
这意味着,至少在Ruby 1.9中,最后一行也可以写成as
body user: user, url: "http://example.com/login"
请问您正在开发什么样的应用程序? Rails开发者在ActionMailer的上下文中遇到他的第一个无接收者消息发送是非常不寻常的。对于我所知道的大多数Rails开发人员来说,第一个无接收者消息发送是在“ActiveRecord”上下文中的“has_many”和“belongs_to”。 – 2010-06-16 12:46:07