首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >闭包中的inout参数使Swift编译器崩溃

闭包中的inout参数使Swift编译器崩溃
EN

Stack Overflow用户
提问于 2014-11-05 07:17:49
回答 2查看 1.2K关注 0票数 17

我所需要做的就是在Swift中启动一个新项目并添加到main.swift

代码语言:javascript
复制
struct Foo {
  let bar: (inout baz: String) -> ()
}

当我尝试构建时,我得到一个错误:

Command failed due to signal: Segmentation fault: 11

我做错什么了吗?

我认为闭包中的inout参数可能不受支持,但如果我像这样定义一个闭包:

代码语言:javascript
复制
let baz: (inout baz: String) -> () = { baz in
  baz += "x"
  return
}

甚至是

代码语言:javascript
复制
var baz: (inout baz: String) -> ()?

它编译并运行正常

EN

回答 2

Stack Overflow用户

发布于 2015-02-14 03:23:08

我刚刚在Xcode 6.3测试版附带的Swift 1.2中测试了它,并且编译成功。所以这绝对是他们在上一个版本中解决的编译器上的一个错误

票数 1
EN

Stack Overflow用户

发布于 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

无效可能的解决方案:显式指定返回值类型(在本例中为“”)。希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26746913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档