在我的Ruby脚本中出错

时间:2011-02-20 22:34:02

标签: ruby

class Card

  attr_accessor :number, :suit

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

  def to_s
    "#{@number} of #{@suit}"
  end
end

我假设这会创建一个正确的新数组? 但为什么使用AT符号呢?我应该何时使用它而不使用它?

@stack_of_cards = []

@stack << Card.new("A", "Spades")

puts @stack

# => BlackjackGame.rb:17: undefined method `<<' for nil:NilClass (NoMethodError)

为什么会出现此错误?

2 个答案:

答案 0 :(得分:2)

正如错误所说:变量@stack未定义(或nil)。
你的意思是@stack_of_cards << ..吗?

答案 1 :(得分:2)

如果你(ruby -W2 script_name.rb)上有警告,你会收到警告:@stack不仅仅是零,而是未定义。有关如何调试的更多提示,请参阅How do I debug Ruby scripts?