Scalaでは、ネストされたforループを持っていて、それぞれに異なるものを実行したい場合はどうなりますか?外部forループのみをスカラーで実行する方法は?
for (int i = 0; i<5; i++) {
System.out.println(i); //do something for just i
for(int j = 0; j<5; j++) {
System.out.println(i+j); //do something for both i and j
}
}
しかし、Scalaのコード:
for {i<-0 to 5
j<- 0 to 5} yield { print(i); print(i+j)}
は出力が得られます。
0
(0,0)
0
(0,1)
0
(0,2)
0
(0,3)
0
(0,4)
0
(0,5)
が、私はそれになりたい:
0
(0,0)
(0,1)
(0,2)
(0,3)
(0,4)
(0,5)
唯一の方法はあります各i
を印刷します。i
およびi+j
各i
およびj
ループの1つはです。
'場合(J == 0)印刷、次のよう
map
機能を使用することです(I ); print(i + j); '..非常にきれいではなく、副作用として。なぜネストされたループではないのですか?範囲に対して "x < - a〜b"の構文を使用することはできます。 – user2864740これは私の問題の抽象表現です。基本的には、私は2つのことを繰り返すことを望みます。外側のループで何かを行い、内側のループで何かを実行してください。@ user2864740 – rileyss
ただ2つのfor-loopsを使用してください。また、for {...} {...} 'はfor-loopです。 '{...} yield {...} 'はfor-comprehensionです。彼らは非常に異なるものです。 –