如何在另一个类中访问此实例方法

时间:2014-07-12 21:19:57

标签: ruby methods

以下是代码:

class Movie

    def initialize(title, rank=0)
        @title = title
        @rank = rank
    end

    def to_s
        "#{@title} has a rank of #{@rank}"
    end

    def thumbs_up
        @rank += 1
    end

    def thumbs_down
        @rank -= 1
    end
end

class Playlist
    def initialize(name)
        @name = name
        @movies = []
    end

    def add_movie(movie)
        @movies << movie
    end

    def play 
        puts "#{@name}'s playlist:"

        @movies.each do |movie|
            movie.thumbs_up
            puts movie
        end
    end
end`

我的问题是关于thumbs_up。这段代码很有用,但我很好奇如何在播放列表类的play方法中访问竖起大拇指。这是因为添加到数组的电影是Movie的一个实例,因此可以调用thumbs_up吗?如果是这样,奇怪的是,可以在不同的类中调用该方法。

感谢。

2 个答案:

答案 0 :(得分:1)

thumbs_uppublic方法,因此,无论调用发生在何处,都可以从Movie实例调用。

答案 1 :(得分:1)

这并不奇怪。 thumbs_up是Movie类中对象的公共方法,因此无论电影对象驻留在哪里,都可以在其上调用thumbs_up

该方法是Movie对象的特征之一,它由方法和状态组成(状态是存储在类对象中的信息,在实例变量中)。