有可能在
Swift中有一个可选inout参数到一个函数吗?我想这样做:
func testFunc( inout optionalParam: MyClass? ) { if optionalParam { ... } }
Type 'inout MyClass?' does not conform to protocol 'NilLiteralConvertible'
我不明白为什么当我们的类已被声明为可选项时,我的类应该符合一些特殊的协议.
它不会编译,因为函数期望引用,但是你传递为零.问题与可选项无关.
通过使用inout声明参数意味着您将在函数体内分配一些值.如何赋值为零?
你需要调用它
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
这是相当于你得到的(但更容易理解)