Translate

BTemplates.com

Powered by Blogger.

2017年10月28日土曜日

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 コメント:

コメントを投稿