【发布时间】:2015-04-23 02:53:46
【问题描述】:
我正在尝试解决这个问题:
创建一个接受整数数组的函数,一个通过引用传递的函数,它将对数组执行操作并返回一个 Int 结果。
我遇到了问题。经过多次搜索无济于事,我将问题分解为代码段,以单独测试每一段。
我简单的“通过引用代码传递函数”是:
func counter(start:Int)->String{
for var i = 0 ; i<start; ++i{
println("I => \(i)")
}
return "Done"
}
func test(i:Int, inout f:(Int)->String){
f(i)
}
test(5,&counter)
问题是,即使我通过引用传递函数的简单测试也失败了:
(Int)->String is not convertible to @lvalue inout $T3
如果我这样做:
func counter(end:Int)->String{
for var i = 0 ; i<end; ++i{
println("I => \(i)")
}
return "Done"
}
func test(i:Int, inout f:(Int)->String){
f(i)
}
var f1 = counter
test(5,&f1)//pass a reference as an argument to the function
这是通过引用传递吗?由于这行得通,我不确定这是否正确。
我做错了什么?
【问题讨论】:
标签: function swift pass-by-reference