2012-03-22 61 views
0

我在github上使用State Machine Ruby README.md。Ruby狀態機 - 從符號中減去?

我想將SM與我的Rails應用程序集成。

不過我很好奇這是什麼線做:

before_transition :parked => any - :parked, :do => :put_on_seatbelt 

格外這個片段看起來像「魔術」我說:

any - :parked, 

洙,你從某種物體減去符號( s)返回any幫手。 它是如何工作的以及整條線上的究竟是什麼(before_transition ...)?

回答

1

any是的單一實例AllMathcher,它代表您的模型的任何狀態。減號(「 - 」)運算符實際上是一個實例方法AllMatcherreference here),它將給定狀態從模型狀態中排除。

因此,如果你的模型具有的狀態:running:stopped:parked,然後any - :parked剛剛返回美國:running:stopped:parked除外)。

而且整個聲明before_transition :parked => any - :parked, :do => :put_on_seatbelt的含義是:模型過境:parked任何狀態,但:parked之前,做了手術:put_on_seatbelt

0

我還沒有看到statemachine代碼(我也不能在github上輕鬆找到它 - 鏈接可能有幫助);但我猜想any返回一個包含符號的類似集合的對象,它具有定義爲元素刪除的-

假設,並應用常識性的閱讀,我會解釋線「從:parked狀態轉移到比:parked其他任何國家之前,你應該做:put_on_seatbelt