Ruby类被称为方法

时间:2014-12-21 01:47:41

标签: ruby

有没有办法定义一个类,以便您可以将该类称为方法来执行所需的代码?例如(没有工作):

class MySpecialClass
  def self(x)
    x*x
  end
end

在控制台中:

MySpecialClass(4)
=> 16
MySpecialClass(5)
=> 25

我似乎无法在网上找到任何东西,但是一些Ruby(2.1.2)类似乎能够有类似的行为,例如String

String("hello")
=> "hello"
String(3)
=> "3"

请注意,这与String#new类方法的行为不同:

String.new(3)
TypeError: no implicit conversion of Fixnum into String

1 个答案:

答案 0 :(得分:9)

您所要做的就是定义一个与该类同名的方法:

def MySpecialClass(x)
  x * x
end

String(foo)实际上正在调用Kernel#String方法。