我對Ruby相當陌生,並試圖研究這個問題。這是目前的代碼。我似乎沒有調用用戶對象(user.deal_one(mydeck.deal_card))這個問題,但是當我在經銷商處調用它時,我得到了同樣的錯誤。經銷商對象具有相同的實例變量,我不確定它爲什麼調用方法'< <'。問題理解Ruby錯誤:未定義的方法`<<'爲零:NilClass(NoMethodError)
以下是完整的錯誤:blackjackOOP.rb:32:在deal_one': undefined method
< < '的零:NilClass(NoMethodError) 從blackjackOOP.rb:106:在`'
class Deck
def initialize
@deck = []
@suit = ["Clubs", "Diamonds", "Hearts", "Spades"]
@value = [2, 3, 4, 5, 6, 7, 8, 9, 10, "Jack", "Queen", "King", "Ace"]
@count = 0
@value.each do |x|
@suit.each do |y|
@deck[@count] = [x, y]
@count += 1
end
end
@deck.shuffle!
end
def deal_card
@card = []
@card << @deck.pop
@card
end
def show_deck_size
puts @deck.size
end
end
module Hand
def deal_one(card)
@hand << card
end
def total
@total = 0
@hand.each do |card|
card.each do |val, suit|
if val == "Jack" || val == "Queen" || val == "King"
@total += 10
elsif val != "Ace"
@total += val
elsif val == "Ace"
if @total > 10
@total += 1
else
@total += 11
end
end
end
end
end
end
class Player
include Hand
def initialize(name)
@name = name
@hand = []
end
def hit_stay
puts "#{@name} has #{show_hand} for a total of #{@total}"
end
def show_hand
@hand.each do |card|
card.each do |val, suit|
print "#{val} of #{suit} "
end
end
end
end
class Dealer
include Hand
def initalize
@name = "Dealer"
@hand = []
end
end
def say(n)
puts "=> #{n}"
end
say("Hello would you like to play some blackjack? Great!")
say("What is your name?")
name = gets.chomp
mydeck = Deck.new
user = Player.new(name)
dealer = Dealer.new
say("Welcome #{name}! Let's play!")
#deal hands to dealer and player
user.deal_one(mydeck.deal_card)
user.deal_one(mydeck.deal_card)
dealer.deal_one(mydeck.deal_card)
[請接受答案](http://stackoverflow.com/questions/21369303/issue-understanding-ruby-error-undefined-method-for-nilnilclass-nomethod/21369424#21369424)如果它幫助你。 –