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

发布于 01-17 02:13 字数 169 浏览 3 评论 0原文

在 swift 中,get 和 set 的使用不是强制性的,如果在闭包中使用“in”也不是强制性的,那么如何区分闭包和计算属性呢?

就像下面的例子中的greet是一个闭包还是计算属性?

var greet = {
  return 4+3
}

greet()

In swift use of get and set is not compulsory and if use of "in" in closure is also not compulsory then how to differentiate a closure and computed property?

Like in below example greet is a closure or computed property?

var greet = {
  return 4+3
}

greet()

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

只为一人2025-01-24 02:13:20

当需要传递参数时,可以使用关键字in

函数和计算属性之间也存在差异:如果使用符号 =,则将变量等同于函数,因此需要调用 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

You use the keyword in when you need to pass a parameter.

There are also differences between functions and computed properties: if you use the symbol =, you are equalling your variable to a function, so you need to call greet().

If instead = you use :, you have a computed property, call greet.

Here's a list of different cases:

        // 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
Saygoodbye2025-01-24 02:13:19

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)

greet is a closure. A computed property is

var greet : Int {
  return 4+3
}

greet // without parentheses

And "in" in closure is also not compulsory if a parameter is passed (by the way the return keyword is not compulsory)

var greet = { x in
  4+x
}

greet(4)

unless you use the shorthand syntax

var greet = {
   4+$0
}

greet(4)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文