返回ruby中类的所有对象的属性

Car*_*rpk 2 ruby

我对Ruby(以及一般的编程)很陌生,但我认为有一种方法可以调用所有类对象的属性?

    class Player
      attr_reader :number

      def initialize(name, number)
        @name = name
        @number = number
      end

      def self.all_numbers
        [] << Player.each {|person| person.number}
      end
    end

   guy1 = Player.new('Bill', 23)
   guy2 = Player.new('jeff', 18)
Run Code Online (Sandbox Code Playgroud)

我想通过调用类来访问所有对象的数字..

   Player.all_numbers
Run Code Online (Sandbox Code Playgroud)

希望回归..

    [23, 18]
Run Code Online (Sandbox Code Playgroud)

Leo*_*rea 5

你现在遇到的问题Player是你的自定义类.它不响应类方法each.另一个问题是Player该类不了解在其外部创建的实例.

有很多方法可以解决这个问题.我这样做的方法是实现另一个名为Team的类

class Team
  def initialize(*players)
    @players = players
  end

  def player_numbers
    @players.map { |player| player.number }
  end
end

class Player
  attr_reader :number

  def initialize(name, number)
    @name = name
    @number = number
  end
end

guy1 = Player.new('Bill', 23)
guy2 = Player.new('jeff', 18)

team = Team.new(guy1, guy2)
team.player_numbers
#=> [23, 18]
Run Code Online (Sandbox Code Playgroud)