- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我确信这对您来说是一个简单的问题。
如何用一个 GKState 编写一个具有两个参数的函数?
更新
苹果使用 func willExitWithNextState(_ nextState: GKState)
如果我使用somefunc(state:GKState)
工作很好
而somefunc(state:GKState, string:String)
不起作用,为什么???
其他示例
我已经尝试过这个:
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")
谢谢回复
最佳答案
如果您希望参数是类,请使用 Class.Type
或 AnyClass
func printState (state: AnyClass, string:String) {
print(state)
print(string)
}
并使用Class.self
作为参数
printState(Pippo.self, string:"hello pippo")
更新
如果你的函数定义是
func printState (state:GKState, string:String) {
if state.isValidNextState(state.dynamicType) {
print("\(state.dynamicType) is valid")
}
print(state)
print(string)
}
您需要传入 GKState
的实例(或 GKState
的子类)作为第一个参数,而不是类/子类本身。例如,
let pippo = Pippo()
printState (pippo, "Hello")
关于ios - Gameplaykit GKState,带有两个参数的 swift func,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35141591/
我正在使用 GameplayKit 开发一款游戏,该游戏基于实体组件框架并利用 GKStates。 我想知道以下内容的最佳实践是什么: 我有一个游戏实体,名为 Person。这个人在现场闲逛,做自己的
我的 Playground 中有以下代码: import GameplayKit class TestClass { var sm: GKStateMachine init() {
我确信这对您来说是一个简单的问题。 如何用一个 GKState 编写一个具有两个参数的函数? 更新 苹果使用 func willExitWithNextState(_ nextState: GKSta
我是一名优秀的程序员,十分优秀!