作为方法调用的Ruby类
有没有一种方法可以定义一个类,这样您就可以调用该类作为执行所需代码的方法?例如(不起作用): 在控制台中:作为方法调用的Ruby类,ruby,Ruby,有没有一种方法可以定义一个类,这样您就可以调用该类作为执行所需代码的方法?例如(不起作用): 在控制台中: MySpecialClass(4) => 16 MySpecialClass(5) => 25 我似乎在网上找不到任何东西,但是一些Ruby(2.1.2)类似乎具有类似的行为,例如String: String("hello") => "hello" String(3) => "3" 请注意,这与String#new类方法的行为不同: String.new(3)
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
新字符串(3)
TypeError:没有将Fixnum隐式转换为字符串
您只需定义一个与类同名的方法:
def MySpecialClass(x)
x * x
end
String(foo)
实际上正在调用该方法 你的方法与课堂无关。例如,在定义了类和方法之后,您可以将该类放弃到垃圾收集,并且该方法将继续存在:MySpecialClass(4)=>16;我的专业课是a吗?Class=>true;别名m MySpecialClass;MySpecialClass=nil;别名MySpecialClass m;MySpecialClass(4)=>16;我的专业课是a吗?Class=>false
。您当然不希望出现这种行为。我知道,在将MySpecialClass
设置为nil
之前,我不需要对该方法进行别名,该方法仍然存在。
def MySpecialClass(x)
x * x
end