Что означает: ^ в Ruby? - PullRequest
0 голосов
/ 03 мая 2019

Не уверен, что я ищу неправильно, но не смог найти ответ где-нибудь в Интернете ...

Что означает: ^ в Ruby?В частности, пытаясь понять код ниже:

# this returns the element in array_of_numbers, which occurs an odd number of times
array_of_numbers.reduce(:^)
# this returns 0
[1,2,3].reduce(:^)
# this returns 4
[1,2,3,4].reduce(:^)

Я пытался понять логику игры с разными массивами, но я думаю, что что-то упустил.Заранее спасибо!

1 Ответ

3 голосов
/ 03 мая 2019

: перед именем создает символ .

В некоторых контекстах символ можно использовать в качестве сообщения для объекта.Объект, который получает сообщение, реагирует на него, вызывая его метод с тем же именем, что и символ (если такой метод существует).
В ваших примерах этот метод равен Integer#^, чтопредставляет исключающий оператор ИЛИ бит.

[1,2,3].reduce(:^) более или менее совпадает с 1 ^ 2 ^ 3. *
Является языком ООП,1 ^ 2 ^ 3 в Ruby является синтаксическим сахаром для (1.^(2)).^(3).

Подробнее об операторе exclusive OR .


*Они дают тот же результат, но явное выражение должно быть быстрее.

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