ios – 有没有办法在Swift中对常量进行条件赋值?

ios – 有没有办法在Swift中对常量进行条件赋值?,第1张

概述我想创建一个根据条件分配不同值的不可变值.在 Scala我可以写下列内容: let attribs = if #available(iOS 8.2, *) { [ NSFontAttributeName: UIFont.systemFontOfSize(30, weight: UIFontWeightLight) ] } else { [ NSFontAtt 我想创建一个根据条件分配不同值的不可变值.在 Scala我可以写下列内容:
let attribs = if #available(iOS 8.2,*) {        [ NSFontAttributename: UIFont.systemFontOfSize(30,weight: UIFontWeightlight) ]    } else {        [ NSFontAttributename: UIFont.systemFontOfSize(30) ]    }

但是由于Swift if语句不返回执行代码块的结果不起作用.

如果测试是针对正常的Bool,我可以使用三元条件运算符

let attribs = #available(iOS 8.2,*) ?        [ NSFontAttributename: UIFont.systemFontOfSize(30,weight: UIFontWeightlight) ]    :        [ NSFontAttributename: UIFont.systemFontOfSize(30) ]

但是这不适用于iOS版本测试,我收到以下错误:

#available may only be used as condition of an 'if','guard' or 'while' statement.

我觉得我被卡住了一个var,但是除非我也可以选择我在多数情况下最终得到一个双重任务,这似乎是如此丑陋和不必要?

var attribs = [ NSFontAttributename: UIFont.systemFontOfSize(30) ]    if #available(iOS 8.2,weight: UIFontWeightlight) ]    }

感谢任何帮助!

解决方法 在两个单独的行上进行声明和分配:
let attribs: [String: Any]if #available(iOS 8.2,*) {    attribs = [NSFontAttributename: UIFont.systemFontOfSize(30,weight: UIFontWeightlight)]} else {    attribs = [NSFontAttributename: UIFont.systemFontOfSize(30)]}

即使它是一个let,你可以在一个单独的行上进行分配(每个控制路径只有一次).

总结

以上是内存溢出为你收集整理的ios – 有没有办法在Swift中对常量进行条件赋值?全部内容,希望文章能够帮你解决ios – 有没有办法在Swift中对常量进行条件赋值?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1095139.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存