首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ruby中定义自定义运算符

在ruby中定义自定义运算符
EN

Stack Overflow用户
提问于 2013-03-27 04:53:16
回答 2查看 538关注 0票数 2

我希望能够定义自定义运算符。这有可能吗?例如,为了让a***b有意义。

是否也可以用猴子修补现有的运算符?例如,让a**b总是返回一个浮点数?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-27 05:21:07

可以,停那儿吧。例如:

代码语言:javascript
复制
class Fixnum
  def **(x)
    self.*(x)*1.0
  end
end

5**4 #==> 20.0
票数 3
EN

Stack Overflow用户

发布于 2013-03-27 05:24:57

自定义运算符?除非你想破解C parser (或者JRuby的Java解析器等等)。OTOH,运算符主要是方法的语法糖,你可以定义所有你想要的方法。

由于许多运算符(but not all)只是伪装的方法,您可以随意修补现有运算符的实现。您必须跟踪定义其自己的**实现的所有数值类,并修补所有这些类;请注意,您需要涵盖RationalComplex……来自内核以及来自标准库的BigDecimal之类的东西。我强烈建议不要这样做,因为这样做只会让自己痛苦不堪;例如,当结果不适合Float时,您会如何处理BigDecimal#**?那Complex#**呢?如果你需要Floats来做某事,可以通过一个to_f调用来显式的表达。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15647182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档