właśnie napisał little helper do tworzenia interfejsów API, takich jak ten w dość spójny sposób, może Ci się spodoba.
// > npm i mu-ffsm # install node dependency
var mkChained = require('mu-ffsm');
Chodzi o to, że skonstruowanie biegle konstruktora z pewnego stanu początkowego typu S
wywołując funkcję wejścia. Następnie każde połączenie łańcuchowe powoduje przejście stanu do nowego stanu. .
Wartość można uzyskać z łańcuchowym kilka połączeń może być realizowana jako funkcja, która wzywa zjazd do skonstruowania wartości z tego stanu i wszelkie opcje, które przechodzą w
- wpis: * ⟶ S
- przejście (S ⟶ *) ⟶ S
- wyjście S ⟶ (* ⟶ *)
Przykładowo
var API = mkChained({
0: function(opt) {return ;/* create initial state */},
then: function(s, opt) {return s; /* new state */},
whut: function(s, opt) {return s; /* new state */},
1: function(s, opt) {return ;/* compute final value */}
});
Tak 0
, to wejścia, funkcje wyjścia. Wszystkie pozostałe funkcje zmieniają stan wewnętrzny. Wszystkie funkcje mogą przyjmować argumenty, np.opt
Tworzymy instancję nowo spreparowanych API
var call = API() // entry
.whut() // transition
.then() // transition
.whut(); // transition
i nazwać
var result0 = call() // exit
, result1 = call() // exit
Prosze spojrzeć na (mały) source aby zobaczyć, jak to jest realizowane.
ps. Użyłem tej odpowiedzi, aby zaktualizować dokumenty: D
Myślę, że odpowiedziałeś na własne pytanie .... co jest nie tak z drugim blokiem kodu? – Zoidberg
@Zoidberg: Tytuł jest łańcuchem metod, więc nie chodzi o to, żeby to działało, ale żeby działało, używając metody łańcuchowej. – kizzx2