簡體   English   中英

向邏輯運算符添加別名

[英]Add alias to logical operators

我有ruby項目(沒有rails),我想為類的邏輯AND和OR運算符添加別名。 我已經為類重載了邏輯運算符,但是如果我添加alias_method :foo, :or並像class_example_1 foo class_example_2那樣使用class_example_1 foo class_example_2 ,則會出現SyntaxError。 如何使別名起作用?

不幸的是,您不能這樣做。

Ruby的infix運算符(如andor被硬編碼為語言語法的一部分,因此您無法像在Haskell或Kotlin中那樣定義新的infix運算符。

有一些奇怪但有趣的技巧可以使您獲得相似的結果,但是解析器約束意味着您無法完全實現想要達到的目的。

或者,您可以只調用不帶括號的foo ,看起來很相似:

class_example_1.foo class_example_2

或者,由於您已經超載了現有的邏輯運算符,因此只需使用以下運算符:

class_example_1 or class_example_2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM