栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

通过快速协议存储/传递功能类型

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

通过快速协议存储/传递功能类型

如您所说,编译器永远不会崩溃;这确实是一个错误,已在此处提交。Swift团队成员Slava
Pestov在其中说:

我们计划使MyProtocol.someInstanceMethod工作。您已经可以在课程中执行此操作,例如,

class Foo {    func f() { ... }}let f: Foo -> () -> () = Foo.f

它对于协议应该具有相同的行为:

protocol Foo {    func f()}let f: Foo -> () -> () = Foo.f

我计划稍后再解决。

到2017年5月8日为止,该错误报告现已标记为“进行中”,因此希望可以将其纳入Swift 4.0的发行版中。

但是,在实现/修复之前,一个简单的解决方法是使用闭包表达式,以便对使用实例的方法进行部分应用来充当thunk:

protocol Test {    func f()}struct S : Test {    func f() {        print("hello")    }}let x: (Test) -> () -> Void = { $0.f }let s = S()x(s)() // "hello"

当然,如果不需要中间部分应用的函数,则可以说:

let x: (Test) -> Void = { $0.f() }let s = S()x(s) // "hello"


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/660444.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号