[Scala]조건문과 반복문

Scala 조건문 반복분


[Scala]조건문과 반복문

조건문과 반복문에 대해서 알아보기(Scala식 표현에 중점)

조건문

if(조건){실행문}
else is(조건){실행문}
else{실행문}


반복문

for(x <- 1 to 5)
    println("x 값:" + x)

x 값:1
x 값:2
x 값:3
x 값:4
x 값:5

------------------------

for(x <- 1 until 5)
    println("x 값:" + x)

x 값:1
x 값:2
x 값:3
x 값:4

------------------------

for(x <- 1 until 5 by 2)
    println("x 값:" + x)

x 값:1
x 값:3
  • 자바와 큰 차이가 있다. 자바의 for문의 경우 (초기값, 범위, 증감연산)
  • 스칼라는 초기값 변수 선언을 하지않음. to, until 사용
    • to는 5까지, until은 5-1R까지
    • by를 사용하여 증감


스칼라식 이중 for문

// Scala식 이중 for 문 (구구단 1단 2단)
for(x <- 1 to 2; y <-1 to 9 ){
    print( x +"*" + y + "=" + x*y +", ")
}

1*1=1, 1*2=2, 1*3=3, 1*4=4, 1*5=5, 1*6=6, 1*7=7, 1*8=8, 1*9=9, 2*1=2, 2*2=4, 2*3=6, 2*4=8, 2*5=10, 2*6=12, 2*7=14, 2*8=16, 2*9=18,


while, do while

var a = 0

while(a < 20){
    print(a + ",")
    a += 1
}

a: Int = 0
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,

--------------------------------------------------

var b = 0

do{
    print(b + ",")
    b += 1
}while(b < 20)

b: Int = 0
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,
  • 스칼라에서는 a++, a–과 같은 표현식 사용이 불가능
    • a 자체의 값을 변경하는 것이 권장되지 않기 때문이다.


팁: 인덱스가 있는 for문

  • 예를 들어서 루프가 몇번 째 돌고 있는지 알아야 하는 경우에 아래와 같이 사용
for( (num,index) <- List.zipWithIndex){
    println(num)
    println(index)
}
  • List의 zipWithIndex 메서드를 사용하면 배열 및 컬렉션 형식의 자료형에서 루프를 돌 때, 인덱스를 사용할 수 있다.