在 Java 中你可以重载构造函数:
public Person(String name) {
this.name = name;
}
public Person(String firstName, String lastName) {
this(firstName + " " + lastName);
}
Ruby 中有没有办法实现相同的结果:两个采用不同参数的构造函数?
答案是“是”和“否”。
您可以使用多种机制实现与其他语言相同的结果,包括:
- 参数的默认值
- 变量参数列表(splat 运算符)
- 将你的参数定义为散列
该语言的实际语法不允许您两次定义一个方法,即使参数不同。
考虑到上面的三个选项,可以通过您的示例来实现,如下所示
# As written by @Justice
class Person
def initialize(name, lastName = nil)
name = name + " " + lastName unless lastName.nil?
@name = name
end
end
class Person
def initialize(args)
name = args["name"]
name = name + " " + args["lastName"] unless args["lastName"].nil?
@name = name
end
end
class Person
def initialize(*args)
#Process args (An array)
end
end
您将在 Ruby 代码中经常遇到第二种机制,特别是在 Rails 中,因为它提供了两全其美的优点,并允许一些语法糖生成漂亮的代码,特别是不必将传递的哈希值括在大括号内。
This 维基教科书链接 http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Method_Calls提供更多阅读内容
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)