1

我正在尝试学习 Scala,所以任何人都可以告诉我如何在 scala 中转换以下内容:

for (int t = 0; true; t++)

先感谢您。

4

4 回答 4

19

使用命令式风格,您可以编写(就像在 Java 中一样):

var t = 0
while(true) {
  t+=1
  ...
}

使用惰性函数,这可能是:

def ints(n: Int = 0): Stream[Int] = Stream.cons(n, ints(n+1))
ints().map(t => ...)

使用内置函数:

Iterator.from(0).map ( t => .... )

这种无限结构的常见用例是采用无限流或迭代器,对其执行一些操作,然后获取多个结果:

Iterator.from(0).filter(t => t % 1 == 0).map(t => t*t).take(10).toList 
于 2012-05-08T12:08:23.920 回答
8

正如我在评论中提到的,您的问题似乎没有多大意义 - 请添加更多细节。

目前,我能想到的最接近的 Scala 翻译是:

Stream from 0

于 2012-05-08T12:09:41.097 回答
4

您可以使用 while 或 for。

您可以用于

for(i<-0 to 100) {
  println(i)
}

或者你使用直到你想增加 N 个数

for(i <- 5 until 55 by 5) {
    println(i)
}

或者你最好使用 while

var i = 0
while(true) {
  ...
  i+=1
}

或同时做

var i = 0
do {
    ...
    i += 1
} while(true)

看看:http ://www.simplyscala.com/ 并自己测试一下

另外,在我的博客中,我写了一些关于命令式 scala 的文章,其中我使用了 for 和 while 循环,你可以在那里看看。

http://carlosqt.blogspot.com/search/label/Scala

于 2012-05-08T12:58:52.370 回答
2

scala 中的简单理解主要是这样的:

for (i <- 0 until 10) {
  // do some stuff
}
于 2012-05-08T12:14:08.117 回答