t
という変数を他のメソッドで使用しようとしています(initialize
)。 これは、タームのための私のクラスである:他のメソッドで初期化された変数をAASMで使用する
class Term
include AASM
attr_accessor :t
def initialize(term)
@t = term
puts self.t
end
aasm do
state :Initialized, :initial => true
state :OrthographyChecked
event :Orthography do
puts "Check Orthography"
# use @t variable here
transitions :from => :Initialized, :to => :UniquenessChecked
end
# .. more events
end
end
term = Term.new("textstring")
私は新しいインスタンスを作成しますが、印刷されたテキストの順序は、私が期待するものではありません。私が取得:
Check Orthography #from Orthography event
textstring #from initialize method
initializeメソッドは、私がaasm do events
の他の方法でも、変数@t
を使用する場合は、最後の発射された理由を私は理解していません。 @t
をnil
またはt method not found
にすることなく、どうすればいいですか?
「@ t」にアクセスする必要があるのはなぜですか?条件に値を使用したいのですか(例えば遷移が起こることが許されている場合など)、何らかの計算を行うためにその値を必要とするのですか?あるいは、遷移の副作用として変更する必要がありますか?イベントの定義の一部として、または特定の遷移のコンテキストで変数を読み取る必要がありますか? – spickermann
'@ t'が有効な文字を持っているかどうかをチェックしたいと思います。だから、私は計算をする必要はありません。 しかし、私は文字列をlowercharsに操作したいと思います。インスタンス定義(文字列)と関連付け(確率のある文字列)のために余分な情報を検索したいと思います。 –