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

Apple Swift:类型转换泛型

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

Apple Swift:类型转换泛型

假设您有一系列按钮:

let views: [NSView] = [NSButton(), NSButton(), NSButton()]

您可以使用以下强制转换:

let viewsAreButtons = views is [NSButton]  // returns truelet buttonsForSure = views as! [NSButton]  // crashes if you are wronglet buttonsMaybe = views as? [NSButton]    // optionally set

如果您尝试在如下所示的开关盒中使用,它将无法正常工作。编译器(Swift 1.2 Xpre
6.3b1)说:“不能使用[NSButton]类型的下行模式。”

switch views {  case let buttons as [NSButton]:    println("Buttons")  default:    println("something else")}

称之为限制。用例归档雷达。Swift团队真的很想听听反馈。如果您真的想使其工作,可以定义自己的模式匹配运算符。在这种情况下,将是这样的:

struct ButtonArray { }let isButtonArray = ButtonArray()func ~=(pattern: ButtonArray, value: [NSView]) -> Bool {    return value is [NSButton]}

然后工作:

switch views {  case isButtonArray:      println("Buttons")    // This gets printed.  default:     println("something else")}

在操场上尝试一下。希望能帮助到你!



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

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

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