Array对象无法在Ruby中初始化为数组

时间:2014-07-12 17:52:27

标签: ruby arrays initialization

我试图创建一个类歌曲,它接收两个输入,歌曲和艺术家,并创建数组的对象,即[歌曲,艺术家]。当我运行此代码时,我断言我的对象是一个数组失败。如何正确编写一个初始化方法,该方法接收两个输入并创建一个数组对象?

我的代码:

class Song 
    def initialize(song, artist)
        @piece = [song, artist]
    end
end

hello = Song.new("hello", "goodbye")

def assert
    raise "Assertion failed!" unless yield
end

assert { hello.kind_of?(Array) }

2 个答案:

答案 0 :(得分:1)

您的断言假定helloarray,这是不正确的。 hello是类Song的一个实例。

但是,如果您确实已将此添加到班级的顶部:

attr_reader :piece

然后做了这个

assert { hello.piece.kind_of?(Array) } 

会过去。

答案 1 :(得分:1)

helloSong对象,不是数组对象。你的意思是hello.piece

class Song 
    attr_reader :piece  # <---------

    def initialize(song, artist)
        @piece = [song, artist]
    end
end

hello = Song.new("hello", "goodbye")

def assert
    raise "Assertion failed!" unless yield
end

assert { hello.piece.kind_of?(Array) } # <------