当前位置:  开发笔记 > 编程语言 > 正文

Scala编译错误:值+ =不是Int的成员

如何解决《Scala编译错误:值+=不是Int的成员》经验,为你挑选了1个好方法。

我在Scala的初学者级别,我正在尝试以下代码:

var i: Int = 0

for (i <- 0 to 10) {
  if (i == 2) { 
     i += 1     
  }

  println(i)
}

当我增加i编译器说Value += is not member of Int.



1> Yuval Itzcha..:

你要宣告i两次,一次在外部范围,一次在内部.你的理解是看内在的i,这是一个val,而不是一个var,从而影响了外部的宣言.

绑定到另一个名称:

var counter: Int = 0
for (i <- 0 to 10) {
  if (i == 2) {
    counter += 1
  }

  println(counter)
}

请注意,您可以在不声明外部变量的情况下执行此操作,使用count:

val count = (0 to 10).count(i => i == 2)
println(count)

编辑:

根据您的评论,我了解您要打印除了以外的所有数字2.为此你需要否定你的条件:

if (i != 2) {
  counter += 1
}

或者,如果您只想过滤掉2:

(0 to 10).filter(_ != 2).foreach(println)

编辑2:

从你的评论来看,它看起来像一个while循环更适合你想要实现的目标:

var i = 0
while (i < fruits.length) {
  if (fruits(i) == "Banana") {
    i += 1
    println(i + " " + fruits(i))
  } else if (fruits(i) == "Orange") {
    i += 1
    println(i + " " + fruits(i))
  }
}

但是这段代码会遇到无限循环,因为只有i满足条件才会增加.除此之外,既然你正在做i + 1,如果最后一个元素等于"Banana"或"Orange",你可能会超出界限,所以你可能想重新考虑你正在做的事情.你可能会碰到一个


有一个PR可以使错误更明确."不能分配给我"或类似的.
推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有