Приоритет работы в рубине - PullRequest
0 голосов
/ 07 октября 2009

Я очень новичок в Ruby, поэтому, пожалуйста, примите мои извинения, если этот вопрос странный

Я попытался положить 5-8.abs, который возвратил -3, а затем я попытался положить (5-8).abs, который возвратил 3.

Что именно происходит, когда я пытаюсь поставить 5-8.abs, похоже, что abs игнорируется?

Ответы [ 3 ]

9 голосов
/ 07 октября 2009

Это вопрос приоритета.Вызов метода .abs оценивается перед оператором минус.

5-8.abs # => equivalent to 5-(8.abs)

Подумайте об этом так - пробелы не имеют значения в Ruby.Что бы вы ожидали, если бы увидели это?

5 - 8.abs

Вот справочник по Правилам приоритета Ruby .

4 голосов
/ 07 октября 2009

Вызов метода (8.abs в этом случае) всегда имеет более высокий приоритет, чем операторы (- в этом случае).

Итак, 5-8.abs переводится в 5-(8.abs) = 5 - 8 = -3

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

5-8.abs, кажется, делает 5- (8.abs) = 5-8 = -3, как вы получили.

Кроме того, любое старшинство времени меньше всего заметно, помогает явная скобка.

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