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

如何在swift 3.0中连接多个可选字符串?

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

如何在swift 3.0中连接多个可选字符串?

OP提交的错误报告:

  • SR-1122:无法对强制展开的值进行二进制运算符链的类型检查

该问题已解决(修复将于2017年1月3日提交给母版),因此在即将到来的Swift 3.1中不再是问题。


这似乎是与以下情况相关的错误(在Swift 2.2中仅存在于3.0中):

  • !
    在表达式中使用至少3个项的强制展开运算符()(使用至少2个基本运算符(例如
    +
    -
    )进行测试。
  • 出于某种原因,鉴于上述原因,Swift弄乱了表达式的类型推断(特别是对于
    x!
    术语本身,在表达式中)。

对于以下所有示例,让我们:

let a: String? = "a"let b: String? = "b"let c: String? = "c"

存在的错误:

// example 1a! + b! + c!    // example 2var d: String =  a! + b! + c!    // example 3var d: String? =  a! + b! + c!    // example 4var d: String?d =  a! + b! + c!    // example 5 (not just for type String and '+' operator)let a: Int? = 1let b: Int? = 2let c: Int? = 3var d: Int? = a! + b! + c!    var e: Int? = a! - b! - c! // same error

错误不存在:

var d: String? = a! + b!let aa = a!let bb = b!let cc = c!var d: String? = aa + bb + ccvar e: String = aa + bb + ccvar d: String? = String(a!) + String(b!) + String(c!)

但是,由于这是Swift 3.0- dev
,因此我不确定这是否确实是“错误”,以及不确定在尚未生产的代码版本中报告“错误”的政策是什么,但是您可能应该提起诉讼为此,以防万一。

至于如何规避此问题,请回答以下问题:

  • 使用例如 不存在的Bug中的 中间变量 上面的 示例2
  • 或明确告诉Swift 3项表达式中的所有项都是字符串,如 不存在的Bug: 上面的 示例3
  • 或者,更好的是,对您的可选对象使用 安全的展开 ,例如,使用 可选绑定
        var d: String? = nil    if let a = a, b = b, c = c {        d = a + b + c    } 


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

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

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