1

私はRubyが初めてで、やりたいことは次のとおりです

class WS< ActiveRecord::Base
  @@SequenceNumber = 0

  def self.oper1
    @@SequenceNumber = 2
  end

  def self.oper2
   @@SequenceNumber += 1 
   puts @@SequenceNumber.to_s
  end

  def self.oper3
   puts @@SequenceNumber.to_s
  end
end

私が次のようなことをした場合:

WS.oper1
WS.oper2
WS.oper3

次の出力が得られます。

3
2

@@SequenceNumber += 1 が機能しないのはなぜですか? 私は何を間違っていますか?

ありがとうございました。

4

2 に答える 2

1

うまく動作します:

class WS
  @@sequence_number = 0

  def self.oper1
    @@sequence_number = 2
  end

  def self.oper2
   puts @@sequence_number += 1
  end

  def self.oper3
   puts @@sequence_number
  end
end

WS.oper3
# 0

WS.oper1
WS.oper2
# 3

WS.oper3
# 3

[注: 私は自由にあなたのコードを Ruby 化しました。]

于 2011-07-27T15:13:34.043 に答える
-5

これは期待どおりに機能しています:

ここに画像の説明を入力

于 2011-07-27T14:56:22.620 に答える