when (x) {
is Foo -> ...
is Bar -> ...
else -> ...
}
..연산자를 이용한다.'a' 이렇게 감싸야 한다... ex) 1...4 = 1, 2, 3, 4..< ex) 1..>4 = 1, 2, 3downTo ex) 4 downTo 1 = 4, 3, 2, 1step ex) 1...5 step 2 = 1, 3, 5for(condition){}
이때 condition은 변수 in range 로 주어진다
for(i in 1..5){}
range는 ..연산자 말고 list를 이용할 수도 있다
val mutableListOf = mutableListOf("testA", "testB", "testC")
for (data in mutableListOf) {
println(data)
}
while(condition){
}
do{
//action
}
while(condition)
기본구조는 여기서 설명했다.
리턴 타입을 정의할려면 변수에서 타입 정의하는것처럼 : 뒤에 리턴 타입을 정의해주면 된다.
fun test(x : Int, y : String) : Int{
return 1
}
그리고 변수가 넘어갈 때 특정한 값으로 고정해서 넘어갈 수 있다.
fun test(x : Int, y : String = "test") : Int{
return 1
}
위처럼 고정해 두면 값이 없으면 기본값이 들어간다.
fun sum(x: Int, y: Int): Int {
return x + y
}
fun sum(x: Int, y: Int) = x + y
위 두가지는 같은 함수이다.
val s = { string: String -> string.uppercase() }("hello")
{변수명: 타입 -> 매서드}(데이터)
이렇게 작동한다.
filter, map 등 자바와 동일한 여러 매서드를 지원한다.
val test : (String) -> String = { string -> string.uppercase() }
위는 기능유형이라는 건데 test에 오른쪽 함수를 넣는 과정이다.
그러면 test에 값을 설정하면 오른쪽 값이 자동으로 설정된다.
이때 타입을 설정 해 줘야 하는데 위처럼 작동한다.
간단히 생각해서 val variableName : type 인데 type 위치에 함수를 넣을 수 있다.
이때 타입을 설정해줘야 하고 그건 위에 예시처럼 설정한다.
함수도 위와 같이 설정 가능하다.
fun test2(variable: String): (String) -> Int ={string -> string.toInt() }