はじめに
この記事では、Kotlin学びたての筆者が、Kotlinの基礎知識をまとめています。
Kotlinを書けるようになることは、Androidアプリの開発において第一歩となるはずです。
将来のAndroidエンジニアを見据えて、共に頑張りましょう!
環境構築をせずにkotlinを試すには、Kotlinのプレイグラウンドがおすすめです。
文中にあるコードをコピペするだけで、手軽に動作確認が行えます。
対象読者
- Androidエンジニアを目指している方
- Kotlinの基礎知識をサクッと学びたい方
- 変数や関数など、ある程度の用語は理解している方
それでは、一緒に始めていきましょう。
変数
Kotlinの変数宣言は、定数がval
, 変数がvar
から宣言します。
val COUNT_NUMBER: Int = 2
var countNumber: Int = 2
定数名はすべて大文字で宣言し、単語と単語の間はアンダースコアで繋ぎます。
また、値を更新しようとするとVal cannot be reassigned
が発生します。
一方、変数名はキャメルケースで宣言し、1文字目は小文字から始めます。
型推論
変数は型を指定しなくても、Kotlinが初期値によって推測してくれます。
以下の場合、変数宣言に型を書いていませんが、それぞれInt
, String
の型だと推測してくれます。
これを型推論と言います。
var countNumber = 2
var greeting = "おはよう"
型を明示しないことによる賛否はあるかと思います。
あくまでもKotlinには型推論が備わっていると捉えておき、チームの方針に沿うのが良いのだと考えます。
ちなみに、繰り返しになりますが、Kotlinは初期値から型推論を行うため、初期化しない場合には型の指定が必須となります。
/* 初期化せずに型推論させようとするとエラーになる */
var countNumber
// This variable must either have a type annotation or be initialized.
関数
関数はfun
と書き始めることで宣言できます。
関数の返り値がある場合は、中かっこの前に返り値の型を指定します。
また、関数内にreturn
を必ず書いて、返り値の型と同様の型で宣言した変数で受け取ります。
fun main() {
var name = "Kotlin"
var greeting: String
greeting = letsGreeting(name)
println(greeting)
}
fun letsGreeting(name:String): String {
return "Hello, $name"
}
Unit型を返す関数
返り値の型指定をしなかった場合、Unit
型が返ります。
fun noReturn(): Unit {
plintln("何も返却しない")
}
Unit
型は結果として何も返らないため、Javaのvoid
と同様の関数宣言になります。
また、Unit
を省略して書くことができます。
// 前述のコードと同義です
fun noReturn() {
plintln("何も返却しない")
}
名前付き引数
名前付き引数を使うと、どのパラメータに引数を渡すのかを明確にできます。
例えば以下の関数をprofile(19, 4, 2)
と呼び出した場合、パラメータが何であるか不明瞭です。
fun profile(age: Int, numberOfFamilies: Int, favoriteNumber: Int) {
println("年齢: $age\n家族の人数: $numberOfFamilies\n好きな数字: $favoriteNumber")
}
これを、profile(age = 19, numberOfFamilies = 4, favoriteNumber = 2)
のように呼び出すことができます。
また、名前付き引数は順不同で書くこともできます。
profile(favoriteNumber = 2, age = 19, numberOfFamilies = 4 )
デフォルト引数
関数宣言する際に、引数のデフォルト値を設定できます。
この場合、呼び出し元から引数が渡ってこなければ、それが使用されます。
fun main() {
profile() // デフォルト引数が使われる
profile(21) // ageのみ引数が渡り、残りはデフォルト引数が使われる
profile(numberOfFamilies = 2) // numberOfFamiliesのみ引数が渡り、残りはデフォルト引数が使われる
}
fun profile(age: Int = 20, numberOfFamilies: Int = 5, favoriteNumber: Int = 3) {
println("年齢: $age\n家族の人数: $numberOfFamilies\n好きな数字: $favoriteNumber")
}
次回予定
この記事に対して以下を追記予定です。
- 条件分岐
- nullについて
- クラスとオブジェクト