我对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)
你现在遇到的问题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)
| 归档时间: |
|
| 查看次数: |
722 次 |
| 最近记录: |