Я уверен, что это простой вопрос для вас.Gameplaykit GKState, быстрая функция с двумя параметрами
Как написать func с двумя параметрами с одним GKState?
UPDATE
компании Apple использовать func willExitWithNextState(_ nextState: GKState)
Если я использую somefunc(state:GKState)
работы мелкие
в то время как somefunc(state:GKState, string:String)
does't работы, почему ???
Другой пример
Я попытался это:
class Pippo:GKState {}
//1
func printState (state: GKState?) {
print(state)
}
printState(Pippo) //Error cannot convert value of type '(Pippo).Type' (aka 'Pippo.Type') to expected argument type 'GKState?'
//2
func printStateAny (state: AnyClass?) {
print(state)
}
printStateAny(Pippo) //NO Error
//3
func printStateGeneral <T>(state: T?) {
print(state)
}
printStateGeneral(Pippo) //No Error
//4
func printStateAnyAndString (state: AnyClass?, string:String) {
print(state)
print(string)
}
printStateAnyAndString(Pippo/*ExpectedName Or costructor*/, string: "Hello") //ERROR
printStateAnyAndString(Pippo()/*ExpectedName Or costructor*/, string: "Hello") //ERROR cannot convert value of type 'Pippo' to expected argument type 'AnyClass?'
РЕШЕНИЕ БЛАГОДАРЯ @ 0x141E
func printStateAnyAndString (state: GKState.Type, string:String) {
switch state {
case is Pippo.Type:
print("pippo")
default:
print(string)
}
}
printStateAnyAndString(Pippo.self, string: "Not Pippo")
Спасибо за ответ
Спасибо, я попробую дома. Но почему использование apple func willExitWithNextState (_ nextState: GKState)? И почему, если я использую somefunc (state: GKState), работает somefunc (state: GKState, string: String) does't work ??? –
Первое решение - это то, что я хочу! благодаря! Не второй, потому что я должен проверять класс, а не istance. –
Вы можете использовать '.dynamicType', если вам нужно проверить тип/класс объекта (см. Мое обновленное 2-е решение). – 0x141E