Это не задание.В Ruby присваивания выполняются с использованием оператора присваивания =
, например:
var = val
Возможно, вы думаете о некоторых диалектах Lisp, где присваивание выглядит так:
(def var val)
Это простопростая отправка сообщения без получателя.
В Ruby общий синтаксис для отправки сообщения:
receiver.selector(argument1, argument2)
Однако, если receiver
равно self
, вы можете пропустить receiver
, поэтому
selector(argument1, argument2)
совпадает с
self.selector(argument1, argument2)
[Примечание: это не совсем так.В 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"
Кроме того, в Ruby 1.9 литерал Hash
, где все ключи Symbol
s, может быть записан с использованием альтернативного Hash
буквальный синтаксис:
{ key1: val1, key2: val2 }
совпадает со старым синтаксисом
{ :key1 => val1, :key2 => val2 }
, что означает, что, по крайней мере в Ruby 1.9, эта последняя строка также может быть записана как
body user: user, url: "http://example.com/login"