这个ruby继承代码有什么问题? class歌曲 def初始化(名称、艺术家、持续时间) @name=name @艺术家 @持续时间=持续时间 结束 def至美国 “歌曲:{@name}--{@artist}({@duration})” 结束 结束 卡罗基松班 定义初始化(名称、艺术家、持续时间、歌词) 超级(姓名、艺术家、持续时间) @歌词 结束 结束 aSong=KarokeSong.new(“Umerilla ila ila a”,“蕾哈娜”,260,“我的歌词”) 让阿松变得如此
$I将此文件命名为jukebox.rb我使用的是ruby版本2.0.0 p451,当我尝试运行此示例时,ruby解释器会发出以下错误 参数数量错误(3个中的4个)(参数错误) 从jukebox.rb:20:in'new' 从jukebox.rb:20:in'main'这个ruby继承代码有什么问题? class歌曲 def初始化(名称、艺术家、持续时间) @name=name @艺术家 @持续时间=持续时间 结束 def至美国 “歌曲:{@name}--{@artist}({@duration})” 结束 结束 卡罗基松班 定义初始化(名称、艺术家、持续时间、歌词) 超级(姓名、艺术家、持续时间) @歌词 结束 结束 aSong=KarokeSong.new(“Umerilla ila ila a”,“蕾哈娜”,260,“我的歌词”) 让阿松变得如此,ruby,inheritance,Ruby,Inheritance,$I将此文件命名为jukebox.rb我使用的是ruby版本2.0.0 p451,当我尝试运行此示例时,ruby解释器会发出以下错误 参数数量错误(3个中的4个)(参数错误) 从jukebox.rb:20:in'new' 从jukebox.rb:20:in'main' KarokeSong的initialize方法拼写错误 嗯,在执行KarokeSong.new时,您正在从只需要3个参数的Song调用initialize。您的类名可能拼写错误-它应该被称为KarokeSong而不是KarokeS
KarokeSong的
initialize
方法拼写错误 嗯,在执行KarokeSong.new时,您正在从只需要3个参数的Song调用initialize。您的类名可能拼写错误-它应该被称为KarokeSong而不是KarokeSong(您缺少一个“a”)。我已经解决了,@Michael Rapadas指出拼写错误的方法名initialize而不是initializeI即将回答这个问题。由于拼写错误,它将尝试直接调用超级类构造函数,这需要3个参数。很好的解释。谢谢哦,糟糕,那是一个非常愚蠢的错误。谢谢你,每个人都会这样。继续!
class Song
def initialize(name,artist,duration)
@name=name
@artist=artist
@duration=duration
end
def to_s
"Song: #{@name}--#{@artist} (#{@duration})"
end
end
class KarokeSong < Song
def intialize(name,artist,duration,lyrics)
super(name,artist,duration)
@lyrics=lyrics
end
end
aSong=KarokeSong.new("Umerilla ila ila ila a","Rihanna",260,"my lyrics")
puts aSong.to_so