1.2.4 Where语句

函数、扩展和关联类型都可以使用where语句。where语句是对泛型在应用时的一种约束。比如:

func stateFilter<FromState:HTNState, ToState:HTNState>(_ from:FromState, _ to:ToState) where FromState.StateType == ToState.StateType {
    //...
}

这个函数要求它们的StateType具有相同类型。