2014-12-26 2 views
-1

В рубинового (2.2.0) String class documentation, самый первый метод экземпляра заключается в следующем:ruby ​​Класс строки: что такое символ «%»?

str % arg → new_str 

Format—Uses str as a format specification, and returns the result of applying it to arg. (...) 

В первом примере это предусмотрено:

"%05d" % 123 #=> "00123" 

и работает как заявлено. Хорошо, но без '.' «%» не может быть методом, не так ли?
И если это не так, то что вместо этого (и почему указано в «методах экземпляра»?)

+1

Потому что это метод экземпляра. http://stackoverflow.com/a/3331974/438992 В Ruby есть много синтаксического сахара. Точно так же вы можете переопределить другие операторы. –

+2

это метод, подобный '==', '+' или 'my_prop =' ... –

ответ

3

Это синтаксический сахар. Вы можете назвать это с ., если вы хотите:

"%05d" % 123 
# => "00123" 

эквивалентно:

"%05d".% 123 
# => "00123" 

Аналогичный пример:

1 * 2 + 3 
# => 5 
(1.*(2)).+(3) 
# => 5 

Вторая форма действительна, но мы обычно выбираем первая форма, поскольку она более ясная.

Смежные вопросы