Swift 如果常量变量是函数类型的一种,那么什么是不能更改的?

Swift 如果常量变量是函数类型的一种,那么什么是不能更改的?,swift,function,variables,types,Swift,Function,Variables,Types,这里使用的代码来自 变量incrementByTen被分配由的makeIncrementer返回的函数,参数为10 问题1。当递增字节分配给变量而不是常量时,有什么区别?既然这里是常数,哪一部分是不变的 问题2。调用时为什么括号对“()”与变量名一起使用,我知道这可能是函数初始值设定项。但是,incrementByTen是一个常量名称。它是否等于它所指向的函数?或者这只是一种编程语言的一般特性。如果要使用函数类型的变量/常量,则必须将“()”与名称一起使用 使用var也可以,但除非您需要修改变量

这里使用的代码来自

变量
incrementByTen
被分配由的
makeIncrementer
返回的函数,参数为10

问题1。
递增字节
分配给变量而不是常量时,有什么区别?既然这里是常数,哪一部分是不变的

问题2。调用时为什么括号对“()”与变量名一起使用,我知道这可能是函数初始值设定项。但是,
incrementByTen
是一个常量名称。它是否等于它所指向的函数?或者这只是一种编程语言的一般特性。如果要使用函数类型的变量/常量,则必须将“()”与名称一起使用

  • 使用
    var
    也可以,但除非您需要修改变量,否则被认为是不好的做法

  • incrementByTen
    是类型为
    ()->Int
    的函数,因为函数
    makeIncrementer
    返回另一个函数

  • 使用
    var
    也可以,但除非您需要修改变量,否则被认为是不好的做法

  • incrementByTen
    是类型为
    ()->Int
    的函数,因为函数
    makeIncrementer
    返回另一个函数

  • 变量incrementByTen随函数赋值

    这是一切的关键。
    incrementByTen
    的值是一个函数

    如果
    incrementByTen
    var
    变量,则可以将其重新分配给其他函数。因为它是一个
    let
    变量,所以它是一个常量函数。这与
    var
    let
    类型
    Int
    的变量完全相同。整数值和函数值之间没有很大的区别。它们只是价值观

    括号表示“调用函数”。
    incrementByTen
    不是调用函数的结果;这是函数本身。这是一种价值。当计算该值时,它返回一个函数。然后可以使用
    ()
    操作符调用该函数

    这完全等同于:

    makeIncrementer(forIncrement: 10)()
    
    makeIncrementer(forIncrement:10)
    返回一个函数,
    ()
    调用该函数。这类似于:

    let x = thingThatReturnsInt()
    x + 10
    
    在这种情况下,
    x
    是一个
    Int
    ,我们可以对其应用操作符
    +
    makeIncrementer
    恰好返回一个
    ()->Int
    而不是
    Int

    变量incrementByTen随函数赋值

    这是一切的关键。
    incrementByTen
    的值是一个函数

    如果
    incrementByTen
    var
    变量,则可以将其重新分配给其他函数。因为它是一个
    let
    变量,所以它是一个常量函数。这与
    var
    let
    类型
    Int
    的变量完全相同。整数值和函数值之间没有很大的区别。它们只是价值观

    括号表示“调用函数”。
    incrementByTen
    不是调用函数的结果;这是函数本身。这是一种价值。当计算该值时,它返回一个函数。然后可以使用
    ()
    操作符调用该函数

    这完全等同于:

    makeIncrementer(forIncrement: 10)()
    
    makeIncrementer(forIncrement:10)
    返回一个函数,
    ()
    调用该函数。这类似于:

    let x = thingThatReturnsInt()
    x + 10
    
    在这种情况下,
    x
    是一个
    Int
    ,我们可以对其应用操作符
    +
    makeIncrementer
    恰好返回一个
    ()->Int
    而不是
    Int

  • let incrementByTen=makeIncrementer(forIncrement:10)
    不允许您这样做:
    incrementByTen=makeIncrementer(forIncrement:42)
    。除非将新闭包更改为
    var
    ,否则无法将其重新分配给变量

  • incrementByTen
    是一种闭包类型(
    ()->Int
    )。
    ()
    调用闭包时不带任何参数。换句话说,
    incrementByTen
    是闭包本身(打印时显示
    (函数)
    ),而
    incrementByTen()
    是调用闭包返回的
    Int
    值(打印时显示
    10

  • let incrementByTen=makeIncrementer(forIncrement:10)
    不允许您这样做:
    incrementByTen=makeIncrementer(forIncrement:42)
    。除非将新闭包更改为
    var
    ,否则无法将其重新分配给变量

  • incrementByTen
    是一种闭包类型(
    ()->Int
    )。
    ()
    调用闭包时不带任何参数。换句话说,
    incrementByTen
    是闭包本身(打印时显示
    (函数)
    ),而
    incrementByTen()
    是调用闭包返回的
    Int
    值(打印时显示
    10


  • 提示:什么类型返回函数
    makeIncrementer
    ?@ShadowOf
    makeIncrementer
    函数返回函数类型
    ()->Int
    。但是字符串
    makeIncrementer
    是一个函数名,它使用
    ()
    。但是string
    incrementByTen
    是一个变量名,它如何与“()”一起使用?当您在变量中有函数时,您需要有执行此函数的方法,对吗?提示:什么类型返回函数
    makeIncrementer
    ?@ShadowOf
    makeIncrementer
    函数返回函数类型
    ()->Int
    。但是字符串
    makeIncrementer
    是一个函数