我想知道是否可以通过特殊的编译器处理在Predef中实现if...else,类似于classOf[A]所做的方式:定义在Predef中,由编译器填充实现。
当然,很多人会感到放心,知道if始终是if,else始终是else,无论上下文如何。但是,将else定义为if结果类型的方法将其从关键字列表中删除,并允许库设计者定义自己的else方法。(我知道我可以使用反引号将任何关键字用作标识符,但是像`else`这样的东西在代码中看起来很糟糕。)这样的方法可能在讨论的情况下很有用,例如邮件列表上讨论的情况,人们被迫在定义实际上应该命名为else的方法时使用otherwise。(也在SO上讨论这里和这里。)
所以:
1.即使在理论上,是否可能采用这种方法,或者它是否违反了Scala的一些基本原则?
2.缺点是什么?
当然,很多人会感到放心,知道if始终是if,else始终是else,无论上下文如何。但是,将else定义为if结果类型的方法将其从关键字列表中删除,并允许库设计者定义自己的else方法。(我知道我可以使用反引号将任何关键字用作标识符,但是像`else`这样的东西在代码中看起来很糟糕。)这样的方法可能在讨论的情况下很有用,例如邮件列表上讨论的情况,人们被迫在定义实际上应该命名为else的方法时使用otherwise。(也在SO上讨论这里和这里。)
所以:
1.即使在理论上,是否可能采用这种方法,或者它是否违反了Scala的一些基本原则?
2.缺点是什么?