почему - вернет позитив позитивом? - PullRequest
0 голосов
/ 08 мая 2020
min_by {|a| [a.abs, -a] }

Это код для возврата минимального значения, ближайшего к нулю внутри массивов. Пример положительного приоритета ..

x = [-5, 1]
x.min_by {|a| [a.abs, -a]}
==> 1

Вот интересная часть

x = [-1, 1]
x.min_by {|a| [a.abs, -a]}
==> 1

но если

puts -x[1]
==> -1

Почему ставит return отрицательный, а min_by положительный? не было ли -a умножить на -1? Если нет, то что это было?

1 Ответ

0 голосов
/ 08 мая 2020

min_by возвращает минимум в массиве для вашего выражения.

-1 и 1 имеют одинаковое абсолютное значение: 1. Итак, вычисляется -a: и это 1 и -1 соответственно. И -1 - это минимум из двух. Итак, 1 - это минимум для [a.abs, -a]. Есть ли в этом смысл?

-1 evaluates to [1, 1]
1  evaluates to [1, -1] # this is the minimum

, поэтому возвращается 1

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