「Android/kotlin/基本」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→配列の分割) |
(→lateinitとは) |
||
| 行51: | 行51: | ||
super.onCreate(savedInstanceState) | super.onCreate(savedInstanceState) | ||
setContentView(R.layout.activity_main) | setContentView(R.layout.activity_main) | ||
| + | user = User() | ||
| + | } | ||
| + | fun hoge() { | ||
user.name = "taro" | user.name = "taro" | ||
Log.i("MainActivity", "user.name=" + user.name) | Log.i("MainActivity", "user.name=" + user.name) | ||
| 行56: | 行59: | ||
} | } | ||
</pre> | </pre> | ||
| + | lateinit property has not been initialized が起こる場合はインスタンス生成せず呼び出してるので、初回に生成はしておく。 | ||
==配列の分割== | ==配列の分割== | ||
2020年5月12日 (火) 17:44時点における版
null許可
var name: String = null // これだと入らない var title: String? = null // ?をつけるとnullが許可される
読み込みのみ
valを使う
val description = "hoge" description = "hoge2" // 許可されない
!!の意味
var nickname: String? = null
if (!TextUtils.isEmpty(nickname!!)) {
Log.i("test", nickname)
}
nullが入ってたときにkotlin.KotlinNullPointerExceptionを発生させる。
?の意味
user?.name = "taro"
userがnullだったらnullとしてそのまま処理する。
nullじゃない時の値
text1.setText(name ?: "hello");
null判定エラー
requireNotNull(context, {"contextがありません"})
IllegalArgumentExceptionの例外が発生する。
以下と同等だが上のほうがシンプルでよい。
if (context == null) {
throw IllegalArgumentException("contextがありません")
}
型
Int // 数字 String // 文字 Boolean // 真偽 Array<String> // 文字配列 Unit // voidみたいなもの、Unitは省略可能
lateinitとは
インスタンスや変数が使われるタイミングで初期化するもの。nullが入らないように設計されたもの。DIとかでも使えそう。
class MainActivity : AppCompatActivity() {
lateinit var user: User
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
user = User()
}
fun hoge() {
user.name = "taro"
Log.i("MainActivity", "user.name=" + user.name)
}
}
lateinit property has not been initialized が起こる場合はインスタンス生成せず呼び出してるので、初回に生成はしておく。
配列の分割
val key = params[0] val value = params[1]
or
val (key, value) = params
短縮コード
val name = if (id = 10) "taro" else "none"
