English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
for 루프는 특정 횟수를 반복하는 루프 제어 구조를 작성할 수 있도록 합니다.
Scala 언어에서 for 루프 문법:
for( var x <- Range ){ statement(s); }
위 문법에서는:Range 은 숫자 구간을 나타낼 수 있습니다. i to j 또는 i until j。왼쪽 화살표 <- 변수 x에 값을 할당하는 데 사용됩니다.
다음은 i to j 문법(인 j를 포함함)의 예제:
object Test123;
def main40;args: Array91;String93;41;123;
var a = 0;
// for 루프
for( a <- 1 to 10)123;
println( "Value of a: " + a );
}
}
}
위 코드를 실행한 결과는 다음과 같습니다:
$ scalac Test.scala $ scala Test a의 값: 1 a의 값: 2 a의 값: 3 a의 값: 4 a의 값: 5 a의 값: 6 a의 값: 7 a의 값: 8 a의 값: 9 a의 값: 10
다음은 i until j 문법(인 j를 포함하지 않음)의 예제:
object Test123;
def main40;args: Array91;String93;41;123;
var a = 0;
// for 루프
for( a <- 1 까지 10)123;
println( "Value of a: " + a );
}
}
}
위 코드를 실행한 결과는 다음과 같습니다:
$ scalac Test.scala $ scala Test a의 값: 1 a의 값: 2 a의 값: 3 a의 값: 4 a의 값: 5 a의 값: 6 a의 값: 7 a의 값: 8 a의 값: 9
구간 for 루프 중에서 여러 개의 구분자 (;)를 사용하여 여러 구간을 설정할 수 있습니다. 이 구간은 주어진 구간의 모든 가능한 값을 반복합니다. 다음 예제는 두 구간의 반복 예제를 보여줍니다:
object Test123;
def main40;args: Array91;String93;41;123;
var a = 0;
var b = 0;
// for 루프
for( a <- 1 to 3; b <- 1 to 3)123;
println( "Value of a: " + a );
println( "b의 값: " + b );
}
}
}
위 코드를 실행한 결과는 다음과 같습니다:
$ scalac Test.scala $ scala Test a의 값: 1 b의 값: 1 a의 값: 1 b의 값: 2 a의 값: 1 b의 값: 3 a의 값: 2 b의 값: 1 a의 값: 2 b의 값: 2 a의 값: 2 b의 값: 3 a의 값: 3 b의 값: 1 a의 값: 3 b의 값: 2 a의 값: 3 b의 값: 3
for 루프 셋의 문법은 다음과 같습니다:
for( x <- List ){ statement(s); }
위 문법에서는: List 변수가 셋이며, for 루프는 모든 셋의 요소를 반복합니다.
다음 예제는 숫자 셋을 반복합니다. 우리는 List() 를 사용하여 셋을 생성합니다. 앞으로의 장에서는 셋에 대해 자세히 설명할 것입니다.
object Test123;
def main40;args: Array91;String93;41;123;
var a = 0;
val numList = List(1,2,3,4,5,6);
// for 루프
for( a <- numList )123;
println( "Value of a: " + a );
}
}
}
위 코드를 실행한 결과는 다음과 같습니다:
$ scalac Test.scala $ scala Test a의 값: 1 a의 값: 2 a의 값: 3 a의 값: 4 a의 값: 5 a의 값: 6
Scala는 하나 또는 여러 개의 if 특정 요소를 필터링하는 문장을 사용합니다.
for 루프에서 필터를 사용하는 문법입니다.
for( var x <- List if condition1; if condition2... { statement(s);
식별자(;)을 사용하여 하나 이상의 필터 조건을 추가할 수 있습니다.
다음은 for 루프에서 필터링하는 예제입니다:
object Test123;
def main40;args: Array91;String93;41;123;
var a = 0;
val numList = List(1,2,3,4,5,6,7,8,9,10);
// for 루프
for( a <- numList
if a != 3; if a < 8 )123;
println( "Value of a: " + a );
}
}
}
위 코드를 실행한 결과는 다음과 같습니다:
$ scalac Test.scala $ scala Test a의 값: 1 a의 값: 2 a의 값: 4 a의 값: 5 a의 값: 6 a의 값: 7
for 루프의 반환 값을 변수로 저장할 수 있습니다. 문법 구조는 다음과 같습니다:
var retVal = for{ var x <- List if condition1; if condition2... }yield x
구현되지 않은 괄호 안에 변수와 조건을 저장하는 주의해야 할 점retVal 변수는, 루프에서 yield는 현재 요소를 기억하고 집합에 저장하며, 루프가 끝나면 해당 집합을 반환합니다.
다음 예제는 for 루프에서 yield의 사용을 설명합니다:
object Test123;
def main40;args: Array91;String93;41;123;
var a = 0;
val numList = List(1,2,3,4,5,6,7,8,9,10);
// for 루프
var retVal = for{ a <- numList
if a != 3; if a < 8
}yield a
// 반환 값 출력
for( a <- retVal)123;
println( "Value of a: " + a );
}
}
}
위 코드를 실행한 결과는 다음과 같습니다:
$ scalac Test.scala $ scala Test a의 값: 1 a의 값: 2 a의 값: 4 a의 값: 5 a의 값: 6 a의 값: 7