Swift中的单行if语句

2020/12/17 02:31 · ios ·  · 0评论

如何将以下内容从Objective-C转换为Swift?

if (myVar) return;

Swift不会在条件周围使用括号,但是以下代码给出了错误。

if myVar return 

在Swift中,括号不是Objective-C(C)中的可选项。另一方面,parens是可选的。例子:

有效的Swift:

if someCondition {
    // stuff
}

if (someCondition) {
    // stuff
}

无效的Swift:

if someCondition 
    // one liner

if (someCondition)
    // one liner

此设计决策消除了一类完整的错误,这些错误可能是由于不正确地使用if语句而没有使用大括号而引起的,例如以下情况,这种情况可能并不总是很清楚,something有条件地更改somethingElse的值,但每次都会更改的值。

Bool something = true
Bool somethingElse = true

if (anUnrelatedCondition) 
    something = false
    somethingElse = false

print something // outputs true
print somethingElse // outputs false

其他人也解释说,大括号是必须迅速做到的。但是为了简单起见,您总是可以执行以下操作:

let a = -5

// if the condition is true then doThis() gets called else doThat() gets called
a >= 0 ? doThis(): doThat()

func doThis() {
    println("Do This")
}

func doThat() {
    println("Do That")
}

您可以使用新的Nil-Coalescing运算符,因为Swift 3可以在需要时设置默认值(如果if失败):

let someValue = someOptional ?? ""

如果someOptional是false,则此运算符将“”分配给someValue

var dataDesc = (value == 7) ? "equal to 7" : "not equal to 7"

单行if,单行while和单行for被许多开发人员认为是不良样式,因为它们的可读性较差,并且据称是许多错误的来源。

Swift通过禁止单行流控制语句解决了难题。大括号不是可选的...

if someCondition {
     // stuff
}

当然,您仍然可以

if someCondition { return }

也有实施原因。将条件括起来作为可选条件会使分析变得更加困难。强制使用花括号可简化再次解析的过程。

这是我在项目中使用的简单解决方案。

迅捷4+

isManageCardTnCSelected ?
      (checkbox.isSelected = true) : (checkbox.isSelected = false)

var selected: Bool = isManageCardTnCSelected ?
      checkbox.isSelected = true : checkbox.isSelected = false

迅捷3+

var retunString = (state == "OFF") ? "securityOn" : "securityOff"

Swift 3+的一线解决方案

isMyVar ? someAction() : ()

Swift 5简易一线解决方案

var isSeller = (UserDefaults.standard.value(forKey: "isRole") as? String == "ROLE_SELLER") ? true : false
本文地址:http://ios.askforanswer.com/swiftzhongdedanxingifyuju.html
文章标签: ,   ,   ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!