我所需要做的就是在Swift中启动一个新项目并添加到main.swift
struct Foo {
let bar: (inout baz: String) -> ()
}
当我尝试构建时,我得到一个错误:
Command failed due to signal: Segmentation fault: 11
我做错什么了吗?
我认为闭包中的inout
参数可能不受支持,但如果我像这样定义一个闭包:
let baz: (inout baz: String) -> () = { baz in
baz += "x"
return
}
甚至是
var baz: (inout baz: String) -> ()?
它编译并运行正常
发布于 2015-02-14 03:23:08
我刚刚在Xcode 6.3测试版附带的Swift 1.2中测试了它,并且编译成功。所以这绝对是他们在上一个版本中解决的编译器上的一个错误
发布于 2015-09-23 20:59:20
@Bartek Chlebek。在您发布的代码中,有一件模棱两可的事情(以粗体显示):"let bar:(inout baz: String) -> ()“。当像这样定义你的函数时,你告诉编译器你将返回一个空元组。似乎早期版本的编译器没有区分(一定是类型推断引擎中的错误)空类型和“空元组类型”(用“()”表示)。下面是几个关于元组语法的单词:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Types.html#//apple_ref/doc/uid/TP40014097-CH31-ID448
无效可能的解决方案:显式指定返回值类型(在本例中为“”)。希望这能有所帮助。
https://stackoverflow.com/questions/26746913
复制相似问题