Что делает стрелка вправо в этом коде: "Ramaze.start: port => 80" - PullRequest
1 голос
/ 03 мая 2009
Ramaze.start :port => 80

Если мое понимание верно, строка выше - это вызов метода в Ruby, и вы также можете написать его как:

Ramaze.start(:port => 80)

Но в любом случае, что это значит, если поместить символ => между символом: порт и цифрой 80?

Это способ создания хэша?

Когда метод Ramaze.start получает параметры метода, какой тип аргумента?

Получено ли это как пара ключ-значение с одним аргументом?

Или он получил два аргумента: порт и 80?

Ответы [ 3 ]

8 голосов
/ 03 мая 2009

Создает хэш-карту, где символ: порт является ключом, а значение равно 80.

4 голосов
/ 03 мая 2009

Если у вас есть метод, где последний параметр является хешем, фигурные скобки являются необязательными.

Пример:

def foo options
  # ...
end

Тогда это разрешено:

foo :bar => :baz

Но если у вас есть:

def foo options, say_hi
  # ...
  if say_hi
    puts 'Hi!'
  end
end

Тогда вы не можете сделать:

foo :bar => :baz, true

Но вы должны назвать это как:

foo({:bar => :baz}, true)

Хотя я не могу понять, почему в этом случае требуются скобки, но, похоже, они есть.

0 голосов
/ 03 мая 2009

Это называется лямбда. Это короткий способ объявления метода. Например, я могу сказать myBirthday => myBirthday.Where (некоторое значение). Обратите внимание, как вы передаете сам объект в сокращенную функцию. В вашем случае вы передаете порт, давая ему значение 80, а затем возвращаете объект порта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...