in은 값이 범위 내에 있는지의 여부를 테스트한다. !in 은 값이 범위에 속하지 않는지를 확인한다.
in 키워드는 반복과 구성원 모두에 사용된다. for문 제어 표현식 내부에 있는 in은 반복을 의미하고, 그렇지 않은 in의 경우 범위 내의 구성원을 체크한다. Double은 범위를 만들 수 있지만 구성원을 확인하는 데에만 사용 가능하다.in 키워드는 범위로 제한되지 않는다.
문자가 문자열의 일부인지의 여부도 확인할 수 있다. 또, 문자열이 문자열의 범위 내에 있는 구성원인지도 확인 가능하다....만 사용하여 부동 소수점 범위를 정의할 수 있다.
fun inTest() {
val percent = 35
Log.e("KotlinTest", "${percent in 1..100}")
}
fun inTest() {
val values = 1..3
for (v in values) {
Log.e("KotlinTest", "iteration $v")
}
val v = 2
if (v in values)
Log.e("KotlinTest", "$v is a member of $values")
}
fun inTest() {
Log.e("KotlinTest", "${'t' in " kotlin "}")
Log.e("KotlinTest", "${'a' in " kotlin "}")
}
fun isDigit(ch: Char) = ch in '0'..'9'
fun notDigit(ch: Char) = ch !in '0'..'9'
fun inTest() {
Log.e("KotlinTest", "${isDigit('a')}")
Log.e("KotlinTest", "${isDigit('5')}")
Log.e("KotlinTest", "${notDigit('z')}")
}
fun inFloatRange(n: Double) {
val r = 1.0..10.0
Log.e("KotlinTest", "$n in $r? ${n in r}")
}
fun inTest() {
inFloatRange(0.999999)
inFloatRange(5.0)
inFloatRange(10.0)
inFloatRange(10.0000001)
}
fun inTest() {
Log.e("KotlinTest", "${"ab" in "aa".."az"}")
Log.e("KotlinTest", "${"ba" in "aa".."az"}")
}
Expressions & Statements
statement는 effect는 있지만(상태를 변경하지만) 결과를 생성하지 않고, expression은 항상 결과를 생성한다.
expression은 다른 식의 일부로 할당하거나 사용할 수 있는 값을 생성하는 반면 statement는 항상 최상위 요소이다.
모든 함수 호출은 expression이다. 함수가 Unit을 반환하고 부작용(상태 변경)에 대해서만 호출되더라도 결과는 여전히 할당될 수 있다.
fun test() {
val f = for(i in 1..10) {}
}
fun unitFun() = Unit
fun test() {
Log.e("KotlinTest", "${unitFun()}")
val u1: Unit = println(42)
Log.e("KotlinTest", "$u1")
val u2 = println(0) // Type inference
Log.e("KotlinTest", "$u2")
}
fun test() {
val result1 = if (11 > 42) 9 else 5
val result2 = if (1 < 2) {
val a = 11
a + 42
} else 42
val result3 =
if ('x' < 'y')
println("x < y")
else
println("x > y")
Log.e("KotlinTest", "$result1")
Log.e("KotlinTest", "$result2")
Log.e("KotlinTest", "$result3")
}
fun test() {
var i = 10
Log.e("KotlinTest", "${i++}")
Log.e("KotlinTest", "$i")
var j = 20
Log.e("KotlinTest", "${++j}")
Log.e("KotlinTest", "$j")
}
댓글