我有一个问题,根据inout在Swift 3中的用法。
据我所知,inout操作使用起来非常昂贵。
还有一个问题是,何时以及为什么使用inout声明更好?
经常职能:
func double(input: Int) {
var input = input
input = input * 2
}inout声明使用:
func double(input: inout Int) {
input = input * 2
}发布于 2016-07-20 11:08:14
小心点,这是个经典的陷阱!:)
您的两个功能并不相同,因此其中一个并不比另一个“更好”。
你的第一个:
func double(input: Int) {
var input = input
input = input * 2
}什么都不做。
因为使用var input = input,您将生成输入值的副本,所以当您执行input = input * 2时,您只是在修改本地副本,并且由于不返回它,它将被丢弃,该函数最终不会产生任何影响。
你的第二个:
func double(input: inout Int) {
input = input * 2
}做些什么:它修改原始值,因为inout是通过引用传递值的一种方式。不需要复制并返回它:变量本身,即传递给函数的变量,将被更改。
注意:我建议您阅读Martin的优秀链接,其中很好地解释了inout:https://stackoverflow.com/a/34486250/1187415。
https://stackoverflow.com/questions/38479134
复制相似问题