作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
是否可以在 Swift 中为函数添加一个 Optional
inout
参数?我正在尝试这样做:
func testFunc( inout optionalParam: MyClass? ) {
if optionalParam {
...
}
}
...但是当我尝试调用它并传递 nil
时,它给我一个奇怪的编译错误:
Type 'inout MyClass?' does not conform to protocol 'NilLiteralConvertible'
我不明白为什么我的类在已经声明为可选时必须遵守某些特殊协议(protocol)。
最佳答案
它不会编译,因为该函数需要一个引用,但您传递了 nil
。该问题与可选无关。
通过使用 inout
声明参数意味着您将在函数体内为其分配一些值。它如何为 nil
赋值?
你需要这样调用它
var a : MyClass? = nil
testFunc(&a) // value of a can be changed inside the function
如果您了解 C++,那么这是没有可选代码的 C++ 版本
struct MyClass {};
void testFunc(MyClass &p) {}
int main () { testFunc(nullptr); }
你有这个错误信息
main.cpp:6:6: note: candidate function not viable: no known conversion from 'nullptr_t' to 'MyClass &' for 1st argument
这有点等同于你得到的(但更容易理解)
关于Swift 可选的 inout 参数和 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24690710/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!