【发布时间】:2011-11-28 14:53:37
【问题描述】:
这是一个非常无聊的白日梦,但是否有可能通过一些巧妙的元编程技巧在 Ruby 中定义一个新的逻辑运算符?我想定义一个but 运算符。
例如,如果我想在x 但不是y 为真时做某事,我必须写如下内容:
if x and not y
但我想写
if x but not y
它的工作方式应该与and 完全相同,但需要程序员合理使用以增加代码的易读性。
【问题讨论】:
-
不改变解析器。构造的语义不清楚,IMO,没有
and。 -
你能举例说明为什么你认为语义不清楚吗?它的工作原理与
and完全相同。唯一的区别是它暗示x的逻辑值是 !=y的逻辑值。 -
if x but y是什么意思?这不是技术问题,而是“戴夫认为不清楚”的问题——纯粹是优先考虑。 -
这将是一个糟糕的程序员滥用该结构的例子。
unless x but y可能会稍微好一点——尽管它仍然有点垃圾。它基本上很适合我在问题中描述的用例,但仅此而已 - 这就是为什么它是一个空闲的白日梦! -
我的意思是,滥用现有结构同样容易:例如
unless not x and not !y。
标签: ruby metaprogramming