我在互联网上的很多地方和社区中进行了搜索,以找出这种编程语法到底发生了什么。
我正在拼命地寻求此代码中的指导。
在这些特定声明中编译器发生了什么?
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]]()
这些是例子:
第一种情况 - 过渡中发生了什么[prev]?[transition]
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
第二种情况 - return transitions[state]?[transition] != nil 中发生了什么
public final func canAdvance(transition: Transition) -> Bool { return transitions[state]?[transition] != nil }
这就是我想了解的全部。在这些时刻发生了什么?