что значит "?" в рубине значит? - PullRequest
3 голосов
/ 05 октября 2009

Я хочу знать, что это такое и как правильно его использовать.

Другой вопрос об утверждении, которое я видел

assert product.valid? product.errors.full_messages и

assert product.valid?

Но я не могу найти синтаксис для тех, кто утверждает, что означает второй аргумент для утверждения (product.errors.full_messages) или это аргумент для?

Спасибо

Ответы [ 3 ]

11 голосов
/ 05 октября 2009

Ruby использует определенные соглашения об именах для методов. Это позволяет вам быстро определить побочные эффекты, которые они могут иметь, или тип возврата.

В этих соглашениях используются специальные маркеры, такие как "! " и "? " в конце имен методов. Это необычно, так как большинство языков программирования, как правило, запрещают такие символы в идентификаторах, но, тем не менее, это действительно часть имени метода. (и не следует путать с операторами)

  • Постфиксное исправление "? " означает, что метод возвращает логическое значение. Это удобный способ заменить префикс «есть». (эта конвенция существует и в диалектах Лиспа)
  • Постфиксное исправление "! " означает, что метод изменит экземпляр и, следовательно, не будет действовать / возвращать копию.

Обратите внимание, что это просто условности. Вы никоим образом не должны следовать , но это считается хорошей практикой.

3 голосов
/ 05 октября 2009

Это чисто соглашение, оно не имеет формального значения. Это не является необычным для людей, чтобы запутаться в этом, так как многие (большинство?) Языков не допускают такие символы, как? а также ! в идентификаторах.

1 голос
/ 05 октября 2009

Это просто соглашение, чтобы поместить его в метод, который возвращает логическое значение afaik. Вместо того, чтобы делать каждый IsSomething.

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