Как понимать объекты, методы и аргументы в Ruby вычислениях - PullRequest
2 голосов
/ 19 апреля 2020

При изучении Ruby полученных ошибок я получаю разные результаты с некоторыми вычислениями в IRB:

1-2-7-2 # => -10

1.-2.-7.-2 # => 4

1.-2.-7.-2.-4 # => 8

1.-2.-7.-2.+4 # => 0

1.-(2).-(7).-(2) # => -10

Возможно, это связано с методами и аргументами? Я пытаюсь обернуть голову вокруг этого.

1 Ответ

3 голосов
/ 19 апреля 2020

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

Я полагаю, вы пытаетесь опустить нули в своем выражении 1.-2.-7.-2, которое вернет -10, если вы напишите его как 1.0 - 2.0 - 7.0 - 2.

То, как вы получаете 4, заключается в том, что конструкция 1.- вызывает метод -(), потому что все является объектом в Ruby, а затем вы передаете аргумент функции.

В вашем случае это будет проанализировано как

1.-( 2.-( 7.-(2) ) )

# if we try to unwrap
a = 7.-(2) # => 5
b = 2.-(a) # => -3
1.-(-3) # (or 1 + 3) => 4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...