我正在尝试将代码从 Java 转换为 Scala:
class Item {
public long lng;
public String str;
Item(long lng, String str) {
this.lng = lng;
this.str = str;
}
}
Item[] items = getItems(...) //doesn't really matter
int maxCount = getMaxCount()
for(int i = 0; i < maxCount && i < items.length; ++i) {
System.out.println(String.format("%d %s",items[i].lng, items[i].str));
}
这是我的尝试:
class Item (val lng: Long, val str: String)
val items = Array(new Item(1, "11"), new Item(2, "22"))
val maxCount = getMaxCount
for {
x <- items
i <- 0 to maxCount
if i < maxCount
} println(x.lng.toString + " " + x.str)
此外,如何在没有 for {...}
的情况下使用 filterWith
和 foreach
但没有 var
?
它打印字符串 maxCount*2
次。
最佳答案
作为类(class)成员,你需要声明你的值(value)观;正如您定义的那样,它们是构造函数参数。在它们前面加上 val
使它们也是类成员:
class Item(val lng: Long, val str: String)
此外,在最后一行中,错误指示 s
和 l
不是 x
的成员。它们的名称是 str
和 lng
。
据我所知,你根本不需要i
。
val maxCount: Int = ...
items.take(maxCount).foreach { x => println(s"${x.lng} ${x.str}") }
关于java - 为了在 Java 中整合 + 一个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19150114/