Ruby 对象,该对象包含变为零的数组
我有一个类Ruby 对象,该对象包含变为零的数组,ruby,class,Ruby,Class,我有一个类Deck,它表示一个由81张卡组成的数组,但是当我尝试在数组中的任何卡上使用getter函数时,它会给出错误未定义的方法getColor for nil:NilClass(nomethoderor),我假设数组中的所有内容都等于nil 我正在试图弄清楚如何设置我的Deck类,这样我就可以通过使用getCard函数返回任何卡,然后使用card getter方法获取单个卡的所有值 class Card def initialize id, symbol, color, shad
Deck
,它表示一个由81张卡组成的数组,但是当我尝试在数组中的任何卡上使用getter函数时,它会给出错误未定义的方法getColor for nil:NilClass(nomethoderor)
,我假设数组中的所有内容都等于nil
我正在试图弄清楚如何设置我的Deck
类,这样我就可以通过使用getCard
函数返回任何卡,然后使用card getter方法获取单个卡的所有值
class Card
def initialize id, symbol, color, shading, number
@cardId = id #0-80 unique for each indivdual card in the deck
@cardSymbol = symbol # 0 = diamond 1 = squigly 2 = oval
@cardColor = color # 0 = green 1 = blue 2 = pink
@cardShading = shading # 0 = none 1 = lines 2 = solid
@cardNumber = number #number of the symbols on the card
end
def getId
@cardId
end
def getSymbol
@cardSymbol
end
def getColor
@cardColor
end
def getShading
@cardShading
end
def getNumber
@cardNumber
end
end
class Deck
def initialize
@deck = Array.new(81)
@cardDealt = Array.new(81)
end
def AddCardsToDeck
cardId = 0
symbol = 0
color = 0
shading = 0
number = 0
while cardId < 80
if symbol > 2
symbol = 0
color = color + 1
elsif color > 2
color = 0
shading = shading + 1
elsif shading > 2
shading = 0
number = number + 1
else
symbol = symbol + 1
end
card = Card.new(cardId, symbol, color, shading, number)
cardId = cardId + 1
@deck[cardId] = @card
end
end
def getCard cardId
@deck[cardId]
end
end
setDeck = Deck.new
setDeck.AddCardsToDeck
card0 = setDeck.getCard(0)
puts "Color is #{card0.getColor}"
类卡
def初始化id、符号、颜色、着色、编号
@cardId=id#组中每个独立卡的0-80唯一性
@cardSymbol=符号#0=菱形1=扭曲的2=椭圆形
@cardColor=颜色#0=绿色1=蓝色2=粉色
@cardShading=shading#0=none 1=lines 2=solid
@cardNumber=编号#卡上符号的编号
结束
def getId
@卡迪德
结束
def getSymbol
@卡片符号
结束
def getColor
@卡片颜色
结束
def getShading
@明暗处理
结束
def getNumber
@卡号
结束
结束
甲板
def初始化
@甲板=阵列。新(81)
@carddrealed=Array.new(81)
结束
def AddCardsToDeck
卡迪德=0
符号=0
颜色=0
着色=0
数字=0
而心脏病<80
如果符号>2
符号=0
颜色=颜色+1
elsif颜色>2
颜色=0
着色=着色+1
elsif着色>2
着色=0
数字=数字+1
其他的
符号=符号+1
结束
卡片=卡片。新(卡片、符号、颜色、阴影、编号)
卡迪德=卡迪德+1
@卡片组[卡片]=@卡片
结束
结束
def getCard梳棉机
@甲板[卡迪德]
结束
结束
setDeck=Deck.new
setDeck.AddCardsToDeck
card0=setDeck.getCard(0)
放置“颜色为#{card0.getColor}”
这些行
card = Card.new(cardId, symbol, color, shading, number)
cardId = cardId + 1
@deck[cardId] = @card
这就是问题所在。注意在第一行中如何设置局部变量card
,而在第三行中使用未初始化的实例变量@card
。这会将所有条目设置为nil
另一个问题是在将carid
用作索引之前增加它。这会将卡0设置为插槽1等。这是一个典型的“一次性”错误。线路
card = Card.new(cardId, symbol, color, shading, number)
cardId = cardId + 1
@deck[cardId] = @card
这就是问题所在。注意在第一行中如何设置局部变量card
,而在第三行中使用未初始化的实例变量@card
。这会将所有条目设置为nil
另一个问题是在将
carid
用作索引之前增加它。这会将卡0设置为插槽1等。这是一个典型的“一次性”错误。@deck[cardd]=card
pluscardd+=1
肯定会作为与问题无关的注释出现在卡组分配的末尾,而您的代码仍然可以正常运行,您可能对阅读样式指南感兴趣,以了解Ruby如何更喜欢样式化代码。似乎很受欢迎,特别是描述我们喜欢如何命名事物。还有一系列函数可以用于一些琐碎的getter,比如Card
类@deck[cardd]=Card
加上cardd+=1
应该作为与问题无关的注释出现在卡片组分配的末尾,而代码仍然可以正常运行,您可能对阅读样式指南感兴趣,以了解Ruby如何更喜欢样式化代码。似乎很受欢迎,特别是描述我们喜欢如何命名事物。还有一系列函数可以用于一些琐碎的getter,比如卡片
类。我一直认为这是我的类结构中的一个错误,但忽略了这个琐碎的问题。谢谢呃,我一直认为这是我的类结构的一个错误,我忽略了这个小问题。谢谢