인터넷에서 많은 장소와 커뮤니티를 검색하여이 문제가 무엇인지 찾아냅니다. 프로그래밍 구문.이 상황에서 사전에있는 신속한 물음표 연산자를 이해할 수 없습니다. [전환]
나는이 코드의 지침을 필사적으로 찾고 있습니다.
이러한 특정 선언에서 컴파일러는 어떻게됩니까? 무엇이다 -
첫 번째 상황 :
transitions[prev]?[transition] transitions[state]?[transition] != nil
이 클래스가이 변수
public var state: State private var transitions = [State:[Transition:State]]()
그리고 이것들은 예입니다
public final class StateMachine<State: Hashable, Transition: Hashable>
을 선언하는 방법입니다 전환에서 일어나는 [ ? 이전] [전환]
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
두 번째 상황 -?! 반환 전환 [주] [전환]에서 어떤 일이 일어나고 무엇 = 내가 원하는 전부 그
public final func canAdvance(transition: Transition) -> Bool { return transitions[state]?[transition] != nil }
전무 알다. 이 순간에 무슨 일이 일어나고 있습니까?
읽어 보시기 바랍니다 [스위프트 언어 가이드 : 옵션 체인 (https://developer.apple.com/library/content/documentation/ 당신은 당신이
nil
이처럼 찾을 수 없음을 보장 할 수없는 한 그렇게해서는 안 Swift/Conceptual/Swift_Programming_Language/OptionalChaining.html # // apple_ref/doc/uid/TP40014097-CH21-ID245) – vadian읽었습니다. 하지만 전이를 이해하는 데 아직도 어려움이 있습니다. [전환] –