为什么这不起作用并产生“无法调用类型为'(UInt16,UInt16)'的参数列表的'=='?”错误:

func performKeyEquivalent(theEvent: NSEvent) -> Bool {
    let keyCode = theEvent.keyCode

    return keyCode == kVK_Return as UInt16
}


这有效:

func performKeyEquivalent(theEvent: NSEvent) -> Bool {
    let keyCode = theEvent.keyCode

    return keyCode == UInt16(kVK_Return)
}

最佳答案

我认为kVK_Return是一个#define或const整数,并且您尝试将其转换为unsigned int。快速地,没有从一种类型到另一种类型的隐式或显式强制转换,即使它是关于概念上相似的类型(如有符号和无符号整数)也是如此。

无需强制转换,而必须进行显式转换,这就是第二段代码中的操作:创建一个新的UInt16实例,该实例以有符号整数初始化。

关于macos - 无法使用类型为'(UInt16,UInt16)'的参数列表调用'=='吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26505235/

10-09 20:31