概要
はじめてkotlinで実装する機会が訪れ、今までjavaしか触ったことのなかった私は少し苫だった点がありました...。
それは、kotlinは基本的にnullを許容しないということです。
全体的な実装方法はjavaと似ているので、慣れると実装はしやすいなと感じました。
逆に、javaと似ていながらも少し違うことで小さなエラーに悩まされることがありました。
初心者ですので、すべて正しいわけではないと思いますが、自分が理解した範囲でメモ程度にまとめておきたいと思います。
今回は、vue.jsのrouterを使用します。
null許容とnull許容ではないパターン
val nonNullable: String = null //NG
val nullable: String? = null //OK
null許容にさせたい場合は型の後に"?"を加えます。
そうすることで、この変数はString型とnullを許容するということを定義できます。
null許容の変数には呼び出し方にも注意!
メソッド間でのnull許容の変数の受け渡しには注意が必要です。
// null許容の変数なのでIntに"?"をつける必要がある
fun getAge(age: Int?) Int?{
age = 20
return age
}
val user: User = User
// null許容の変数
var age: Int = null
// null許容ではない変数
var userAge: Int = 0
// Userクラスから年齢を取得
var userAge = user.getName(age) // userAgeはnull許容ではないため、コンパイルエラーが起きる!
↓ そのため↑のUserクラスから年齢を取得する場合は
下記のようにif文やエルビス関数などを使用してnullチェックを行う必要がある。
// if文
if(!getName(age)){
var userAge = user.getName(age)
}
// エルビス関数
user.getName(age)?.let{
// getName(age)の戻り値がnullではない場合の処理
var userAge = user.getName(age)
}?: user.getName(age) //nullであった場合ここの処理が実行される
null許容である変数とnull許容ではない変数をうまく使い分ける必要がある。
下記のように無理やりnull許容の変数を「nullではないです!」と宣言することもできる
しかし、安全とは言えないのであまり使わない方が良いそう...
var userAge = user.getName(age)!! //"!!"をつけることでnullで非nullであることを無理やり宣言