Reducing the number of brackets in Swift

99封情书 提交于 2019-12-02 21:38:57

You can do that :

let x = 10, y = 20;
let max = (x < y) ? y : x ; // So max = 20

And so much interesting things :

let max = (x < y) ? "y is greater than x" : "x is greater than y" // max = "y is greater than x"
let max = (x < y) ? true : false // max = true
let max = (x > y) ? func() : anotherFunc() // max = anotherFunc()
(x < y) ? func() : anotherFunc() // code is running func()

This following stack : http://codereview.stackexchange.com can be better for your question ;)

Edit : Be careful with ternary operator

By doing nothing more than replacing the ternary operator with an if else statement, the build time was reduced by 92.9%.

https://medium.com/@RobertGummesson/regarding-swift-build-time-optimizations-fc92cdd91e31#.42uncapwc

In swift you have to add braces even if there is just one statement in if:

if num == 0 {
  // Do something
}

You cannot leave the braces, that how swift if statement work.

You could use a shorthand if statement like you would in objective-c:

num1 < num2 ? DO SOMETHING IF TRUE : DO SOMETHING IF FALSE

Swift 2.0 update Method 1:

a != nil ? a! : b

Method 2: Shorthand if

b = a ?? ""

Referance: Apple Docs: Ternary Conditional Operator

and it does work,

u.dob = (userInfo["dob"] as? String) != nil ? (userInfo["dob"] as! String):""

I am replacing a json string with blank string if it is nil.

Edit: Adding Gerardo Medina`s suggestion...we can always use shorthand If

u.dob = userInfo["dob"] as? String ?? ""

It is called shorthand if-else condition. If you are into iOS development in Swift, then you can also manipulate your UI objects' behaviour with this property.

For e.g. - I want my button to be enabled only when there is some text in the textfield. In other words, should stay disabled when character count in textfield is zero.

button.enabled = (textField.characters.count > 0) ? true : false

its very simple : in Swift 4

    playButton.currentTitle == "Play" ? startPlay() : stopPlay()

Original Code is

    if playButton.currentTitle == "Play"{
     StartPlay()
    }else{
     StopPlay()
    }

You could always put the entire if on one line:

if num == 0 { temp = 0 }
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!