我有一份清单 . 对于奇数位置的所有数字,我想将其设为0.对于偶数位置的所有数字,我想保持原样 . 我正在尝试通过以下方式通过 Map 来完成 .
这是我的代码
def main(args: Array[String]) {
var l1 = List (1,2,3,4,5,6)
println(l1.map(f(_)))
var c = 0
def f(n:Int):Int =
{
if (c%2 == 0)
{c +=1
return n}
else
{c += 1
return 0}
我希望变量能够跟踪位置 . 但是看起来,我无法转发参考'c' .
我收到以下错误
scala forward reference扩展了变量c的定义
我不能在函数内声明'c',因为它永远不会增加 .
在 Map 的帮助下,应该以什么方式实现我的目标 .
1 回答
这是这个问题的优雅解决方案:
至于原因,为什么你的代码失败了:你试图在代码声明之前访问变量
c
. 这里:您的函数
f
正在尝试访问尚未声明的变量c
. 重新排序这两行,它将起作用 . 但我建议坚持我的初步方法 .