Добавить псевдоним для логических операторов - PullRequest
1 голос
/ 21 апреля 2019

У меня есть проект ruby ​​(без рельсов), и я хочу добавить псевдонимы к логическим операторам И и ИЛИ для моего класса. Я уже перегружен логическими операторами для своего класса, но если я добавлю alias_method :foo, :or и использую как class_example_1 foo class_example_2, я получу SyntaxError. Как заставить псевдоним работать?

1 Ответ

0 голосов
/ 21 апреля 2019

К сожалению, вы не можете сделать это.

Инфиксные операторы Ruby, такие как and и or, жестко запрограммированы как часть синтаксиса языка, поэтому вы не можете определить новые инфиксные операторы, такие какВы можете это сделать в Haskell или Kotlin.

Есть несколько странных, но интересных хаков , которые позволяют вам достигать похожих результатов, но ограничения парсера означают, что вы не можете делать точночто вы пытаетесь достичь.

В качестве альтернативы, вы можете просто вызвать foo без скобок, что выглядит довольно похоже:

class_example_1.foo class_example_2

Или, поскольку вы уже перегруженылогические операторы, просто используйте их:

class_example_1 or class_example_2
...