這不是一項任務。在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