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
}

またはまたdo-while

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

http://www.simplyscala.com/を見 て、自分でテストしてください。

また、私のブログでは、for ループと while ループを使用した命令型 scala についていくつか投稿しました。

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 に答える