在我的Ruby脚本中获取错误

在我的Ruby脚本中获取错误,ruby,Ruby,我假设这会创建一个新数组,对吗? 但是为什么要使用AT符号呢?我应该什么时候使用它,什么时候不使用它 class Card attr_accessor :number, :suit def initialize(number, suit) @number = number @suit = suit end def to_s "#{@number} of #{@suit}" end end @stack\u of_cards=[] @stack

我假设这会创建一个新数组,对吗? 但是为什么要使用AT符号呢?我应该什么时候使用它,什么时候不使用它

class Card

  attr_accessor :number, :suit

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

  def to_s
    "#{@number} of #{@suit}"
  end
end
@stack\u of_cards=[]

@stack BlackjackGame.rb:17:未定义的方法`与错误中所说的完全一样:未定义变量
@stack
(或
nil
)。

你的意思是说
@stack\u of_cards与它在错误中所说的完全一样:变量
@stack
未定义(或
nil
)。

你的意思是说如果你在(
ruby-W2 script\u name.rb
)上有警告,你会得到一个警告,
@stack
不仅是零,而且是未定义的。有关如何调试的更多提示,请参阅。

如果在(
ruby-W2 script\u name.rb
)上有警告,则会得到一个警告,
@stack
不仅为零,而且未定义。有关如何调试的更多提示,请参阅。

是的,这就是错误所在。请注意,何时需要使用AT符号?因为我删除了AT符号,脚本仍然运行良好。谢谢。@Sergio它用于声明全局变量(尤其是在Rails中)。在一个简单的脚本中,几乎没有理由使用它,@符号不声明全局变量。它引用了一个实例变量。@Sergio对不起,我很笨,用
@
表示对象的实例变量:)和
@
-类的实例变量(很像java中的
静态
)是的,这就是错误。请注意,何时需要使用AT符号?因为我删除了AT符号,脚本仍然运行良好。谢谢。@Sergio它用于声明全局变量(尤其是在Rails中)。在一个简单的脚本中,几乎没有理由使用它,@符号不声明全局变量。它引用了一个实例变量。@Sergio对不起,我很笨,用
@
表示对象的实例变量:)和
@
-类的实例变量(很像java中的
静态
@stack_of_cards = []

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

puts @stack

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