[英]Is it complusory to use "in" keyword in closure? If no then what is the syntax wise difference between closure and computed property in swift?
在 swift 中,get 和 set 的使用不是强制性的,如果在闭包中使用“in”也不是强制性的,那么如何区分闭包和计算属性?
就像下面的例子一样,greet 是闭包还是计算属性?
var greet = {
return 4+3
}
greet()
greet
是一个闭包。 一个计算属性是
var greet : Int {
return 4+3
}
greet // without parentheses
如果传递参数,则闭包中的“in”
也不
是强制性的(顺便说一下, return
关键字不是强制性的)
var greet = { x in
4+x
}
greet(4)
除非你使用速记语法
var greet = {
4+$0
}
greet(4)
需要传递参数时使用关键字in
。
函数和计算属性之间也存在差异:如果您使用符号=
,则等于您的变量等于 function,因此您需要调用greet()
。
如果=
你使用:
,你有一个计算属性,调用greet
。
以下是不同案例的列表:
// greet is a function, you need to call greet()
var greet = {
return 4 + 3
}
print(greet()) // 7
// greet2 is a computed property, you need to call greet2
var greet2: Int {
return 4 + 3
}
print(greet2) // 7
// greet3 is a function that receives one parameter, you need to call greet3(someInt)
var greet3 = { (parameter: Int) -> Int in
return 4 + parameter
}
print(greet3(4)) // 8
// greet4 is like greet3, but the type is declared outside
var greet4: (Int)->Int = { parameter in
return 4 + parameter
}
print(greet4(5)) // 9
// greet5 is like greet4, where you define the function later
var greet5: (Int) -> Int
greet5 = { parameter in
return 4 + parameter
}
print(greet5(6)) // 10
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.