2017-10-28 到達点メモ
AndroidStudioを2.3から3.0にアップデートした際に本来フォルダ名がresのところをresourceになっている時がある。その場合はGradle自体が古い可能性があるので、それをアップデートすること。
選択して Ctrl + / で選択した部分をコメントアウトすることができる。
参考サイト:Android Studioでのコメントアウトの方法を知りたい
参考サイト:Android Studioでの選択範囲のコメント化とコメント化解除方法
nullableで呼び出した場合、3通りの対応をすることができる
一つは、安全呼び出し
val num: Int? = 1
println(num?.toString())
また、以下のような書き方でもコンパイルが通る。
val num: Int? = 1
println("aaa" + num?.toString())
また、以下のように変数がnullの場合でも、コンパイルは通るが
結果は、『aaanull』になるため、多分良い書き方ではない。
val num: Int? = null
println("aaa" + num?.toString())
また、単純に変数の後ろに?をつけてもnullableが解除されるわけではないらしいので
以下のような書き方だと普通にコンパイルエラーが出る
val num: Int? = 1
val result: Int = 1 + num?
println(result.toString())
二つ目は、エルビス演算子です。
nullの時に返す値を指定できます。
変数のみで判別したい場合は以下のように書きます
この際に括弧を忘れると、AAA:nullと表示されるため注意が必要です。
val test: String? = null
val result_string = "AAA:"+ (test ?: "null_string")
println(result_string)
また、変数に付属する関数の返り値がnullかどうかを見たい場合は、以下のように書きます
val num: Int? = null
val result: Int = 1 + (num?.toString() ?: "666").toInt()
println(result.toString())
エルビス演算子は、左側の変数がnullableであることを前提にしてあるので
それ以外の場合だとwarningが出ます
nullを出すこと自体が推奨されないことを考えると
基本はエルビス演算子でnullの値を明示的に指定するべきだと思います。
三つ目は、!!演算子です。
nullableの後ろに!!を付けます。
具体例は以下の通りです
val num: Int? = 1
val result: Int = 1 + num!!
println(result.toString())
これを使うと一番楽ではあるのですが、
そもそもの目的を考えると基本は避けたほうがいいと思います。
参考サイト:Kotlin Null Safetyについて知ろう
参考サイト:【学習kotlinシリーズ】安全呼び出し
参考サイト:最初に押さえておきたいKotlin言語仕様
Runをしようとして以下のようなエラー文が出た場合、
AndroidStudioを一度落として再度立ち上げて、Build->Clean Project
Build->Rebuild Projectをして再度Runをすればうまくいく
*再度立ち上げた後は、Build->Rebuild Projectだけでいいかもしれない
Error:Could not read path (中略)\app\build\intermediates\transforms\instantRunSlicer\debug\(以下省略)
参考サイト:Error:Execution failed for task ':app:processDebugResources'. > java.io.IOException: Could not delete folder “” in android studio
AndroidStudio3.0から、Gradleでapply plugin: 'kotlin-android-extensions'と宣言し、Activiyを使用するktファイルでimport kotlinx.android.synthetic.main.activity_main.*という風な宣言をする必要がなくなった。ただし、自動で生成しないと書かれないのでそこは注意すること
疲れたので今日はここまで
0 コメント:
コメントを投稿