0

空き時間プロジェクトとしてステートチャートフレームワークを作成しようとしています。

CoffeeScript

Statechart.state "A", ->
  @state "B1", ->
    @state "C"
  @state "B2", ->

JavaScript

Statechart.state("A", function() {
  this.state("B1", function() {
    this.state("C");
  });
  this.state("B2", function() {
  });
});

内側の関数が外側の関数を認識して、B1とB2がAの子であることを認識し、CがB1の子であることを認識できるようにする方法があるのではないかと思います。

更新:bind()を使用しました。うまくいきました!

4

3 に答える 3

1

太い矢印を使用し=>ます。次の実装を使用しますFunction.prototype.bind

Statechart.state "A", ->
   @state "B1", =>
       @state "C"
   @state "B2", =>

このコードでは、@/thisは常にStatechartオブジェクトを参照します。

于 2011-11-18T21:20:48.957 に答える
0

私は、まっすぐな JavaScript でかなりフル機能を備えたものを書きました。スタティバス。これをモデルとして使用して、CoffeeScript に実装できます。

ヘルプが必要な場合や質問がある場合は、最新情報を入手してください。

于 2012-06-05T14:14:34.427 に答える
0

最初の関数内で「this/@」の値への参照を保持する必要があります。

通常、以下のように「self」という変数を作成します。

Statechart.state "A", ->
   self = @
   @state "B1", ->
       self.state "C"
   @state "B2", ->
于 2011-11-18T16:37:30.827 に答える