作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
可以使用 Ruby 创建复数
c = Complex.new(1,2)
但是,它可以缩短为
c = Complex(1,2)
是否可以实现相同的功能而无需在类外部定义函数,如下例所示?
class Bits
def initialize(bits)
@bits = bits
end
end
def Bits(list) # I would like to define this function inside the class
Bits.new list
end
b = Bits([0,1])
我认为 Ruby 应该至少允许下面建议的构造函数之一
class Bits
def initialize(bits)
@bits = bits
end
def self.Bits(list) # version 1
new list
end
def Bits(list) # version 2
new list
end
def Bits.Bits(list) # version 3
new list
end
end
最佳答案
有这个片段:
def make_light_constructor(klass)
eval("def #{klass}(*args) #{klass}.new(*args) end")
end
现在你可以这样做了:
class Test
make_light_constructor(Test)
def initialize(x,y)
print x + y
end
end
t = Test(5,3)
是的,我知道您仍在类外定义一个函数 - 但它只是一个函数,现在您想要的任何类都可以使用它的实现,而不是为每个类创建一个函数。
关于ruby - 如何在不使用 new 的情况下在 Ruby 中创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24351218/
我是一名优秀的程序员,十分优秀!