パターンマッチング

パターンマッチング は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が返ってきています。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする