パターンマッチング はis演算子によって行われてパターンに一致した場合、true、一致しなかった場合、falseを返します。また、否定したい場合は !is になります。Javaでいうところのinstanceofに似ているでしょうか?
下のサンプルではStringでもIntでもいいが1であることを確認しています。
fun main(args: Array<String>) {
var data1: String = "1"
var data2: String = "2"
var data3: Int = 1
var data4: Int = 3
println(isOne(data1))
println(isOne(data2))
println(isOne(data3))
println(isOne(data4))
}
fun <T> isOne(data: T): Boolean = when (data) {
is String -> data.equals("1")
is Int -> data==1
else -> false
}
true
false
true
false
data1はString型で”1″、data3はInt型で1ということでisOne()関数の戻り値はtrueが返ってきています。