是否可以告诉ruby在某些情况下接受左手变量?

rob*_*más 2 ruby

我正在寻找的行为是这样我可以定义方法来获得这样的结果:

> 2i
=> Complex(0,+2i)
> 2²
=> 4
Run Code Online (Sandbox Code Playgroud)

Dyl*_*kow 5

对于第一个,您可以添加自定义实例方法,Fixnum如下所示:

class Fixnum
  def i
    Complex(0, self)
  end
end

> 2.i
# => (0+2i)
Run Code Online (Sandbox Code Playgroud)

正如J -_- L指出的那样,你可以对Ruby 1.9中的第二个做同样的事情,尽管你的rb文件需要# encoding: utf-8在顶部.

正如DNNX指出的那样,在Ruby中已经解决了在Ruby中创建虚数的问题Complex:

require 'complex'
2.im 
#=> (0+2i)
Run Code Online (Sandbox Code Playgroud)