😀

KotlinのtoString()を吟味する

2021/03/05に公開

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