0

このプログラミング構文で何が起こっているのかを見つけるために、インターネットの多くの場所やコミュニティを検索しました。

このコードのガイダンスを必死に求めています。

これらの特定の宣言では、コンパイラで何が起こっていますか?

transitions[prev]?[transition]
transitions[state]?[transition] != nil

これがクラスの宣言方法です

public final class StateMachine<State: Hashable, Transition: Hashable> 

これが変数です

public var state: State


private var transitions = [State:[Transition:State]]()

そして、これらは例です:

  1. 最初の状況 - トランジションで何が起こっているか[前]?[トランジション]

    public final func advance(transition: Transition, observe: Observer? = nil) -> State {
    let prev = state
    if let next = transitions[prev]?[transition], next != prev {
        state = next
        observe?(prev, next)
    }
    
    return state
    
  2. 2 番目の状況 - return transitions[state]?[transition] != nil で何が起こっているか

    public final func canAdvance(transition: Transition) -> Bool {
       return transitions[state]?[transition] != nil
    }
    

私が理解したいのはそれだけです。これらの瞬間に何が起こっていますか?

4

2 に答える 2