繁体   English   中英

在闭包中使用“in”关键字是强制性的吗? 如果不是,那么 swift 中闭包和计算属性之间的语法差异是什么?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM