【发布时间】:2020-11-19 16:20:10
【问题描述】:
这个标题不是最好的,所以我会在这里进一步解释。
我有一个 Card 类和一个 Deck 类,在 Main 中,我正在创建一个 Deck of Cards,然后打印出 Deck 中的所有卡片。我为 Card 制作了一个 to_string 方法(如下):
def to_string
puts "#{self.rank} of #{self.suit}"
end
然后使用该语句和 Main 中的 for/each 语句打印 Deck 中的所有卡片:
for card in deck
puts card.to_string
end
但我收到一条错误消息,说#Deck 有一个“未定义的方法‘每个’:(NoMethodError)。我做了一些搜索,发现解决方案是将此方法添加到我的 Deck 类中:
def each(&block)
@deck.each(&block)
end
我确实了解(或者,我想我了解).each 的工作原理,因为我使用它为我的 Deck 创建所有 Card 对象——它将遍历一个数组并依次获取每个数组项。所以for card in deck 基本上是deck.each 是有道理的。但我不太确定&block 在这里做什么。我对块是什么进行了一些研究(据我了解,基本上是“匿名代码”——例如,array.each 语句中的指令。一种不是正式书面方法的方法)但我仍然没有不知道&block 本身在做什么。
【问题讨论】: