KotlinのtoString()を吟味する
Qiitaにて、シンプルで良い記事を見つけたので、それにあやかって書いてみました。
初回なので、簡単なものから。
toString()
についてです。
記述を見る
Library.ktの中に記述されています。
public fun Any?.toString(): String
// Returns a string representation of the object.
// Can be called with a null receiver, in which case it returns the string "null".
分解する
public
どこからでも参照が可能であることを示す。
fun
関数宣言をする
Any?
すべてのクラスのスーパークラス
toString()
toStringにする。String型に変換する。
: String
返却するものの型を宣言
doc部分
Returns a string representation of the object. Can be called with a null receiver, in which case it returns the string "null".
日本語訳
オブジェクトの文字列表現を返します。null レシーバを指定して呼び出すことができ、その場合は文字列 "null" を返します。
使用する
fun main(){
val price = 100
println(price is Int) // -> true
println(price.toString() is String) // -> true
}
priceに100を代入すると、型はIntとみなされます。
検証する (is演算子)
変数 is 型
で型チェックが行える。マッチしていればtrueが返却されます。
priceに対し、is演算子でInt型チェックを行うと、trueが返ってきます。
一方price.toString()
に対し、String型チェックを行うとtrueが返ってきています。
よって、priceは、toString()を使用すると、String型に変換されていることがわかります。
nullの扱いを見る
Can be called with a null receiver, in which case it returns the string "null".
にあるように、nullなものに対して、toString()
を実行すると、文字列の"null"
が返却されます。
検証する
fun main(){
val price = null // nullを代入
println(price is Int) // -> false
println(price.toString()) // -> null
println(price.toString() is String) // -> true "null"が返却されている
}
priceに対し、nullを代入してあげます。
Int型の型チェックはnullのため、falseになりました。
println(price.toString())
の結果がnullで、
toString()を実行したものは、trueが返ってきたので、nullなものに対し、toString()を実行すると、String型のnullが返ってきます。
Discussion