Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这个ruby继承代码有什么问题? class歌曲 def初始化(名称、艺术家、持续时间) @name=name @艺术家 @持续时间=持续时间 结束 def至美国 “歌曲:{@name}--{@artist}({@duration})” 结束 结束 卡罗基松班 定义初始化(名称、艺术家、持续时间、歌词) 超级(姓名、艺术家、持续时间) @歌词 结束 结束 aSong=KarokeSong.new(“Umerilla ila ila a”,“蕾哈娜”,260,“我的歌词”) 让阿松变得如此_Ruby_Inheritance - Fatal编程技术网

这个ruby继承代码有什么问题? class歌曲 def初始化(名称、艺术家、持续时间) @name=name @艺术家 @持续时间=持续时间 结束 def至美国 “歌曲:{@name}--{@artist}({@duration})” 结束 结束 卡罗基松班 定义初始化(名称、艺术家、持续时间、歌词) 超级(姓名、艺术家、持续时间) @歌词 结束 结束 aSong=KarokeSong.new(“Umerilla ila ila a”,“蕾哈娜”,260,“我的歌词”) 让阿松变得如此

这个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

$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而不是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