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