我需要做的就是在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) -> ()?
它编译并运行正常
答案 0 :(得分:1)
刚刚在Xcode 6.3 beta附带的Swift 1.2中进行了测试,并且编译成功。 所以它绝对是他们在上一个版本中解决的编译器错误
答案 1 :(得分:0)
@Bartek Chlebek。在你发布的代码中,有一个含糊不清的东西(以粗体显示):"让bar :( inout baz:String) - > ()强>&#34 ;.在定义您的函数时,您告诉编译器您将返回一个空元组。似乎编译器的早期版本没有区分(必须是类型推断引擎中的错误)Void类型和"空元组类型" (用&#34表示; ()")。以下是关于元组语法的几个词:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Types.html#//apple_ref/doc/uid/TP40014097-CH31-ID448
可能的解决方案:明确指定返回值类型(在您的情况下为" Void")。希望这会有所帮助。