カテゴリー: Android

Kotlinをはじめよう〜Kotlin基本文法〜

はじめに

こんにちは、今回は改めてKotlinの基本文法についてブログを書きたいと思います。何を今更と思わずに、お読みいただければと思います。

Android StudioでのKotlin開発環境の準備は前回のブログもご参照ください。

 

事前準備

Macをお使いの型は、Kotlinをすぐに手元で試せるようにREPL(Read Eval Print Loop)を準備しましょう。

まずは、HomebrewでKotlinのCUIコンパイラをインストールします。

$ brew update
$ brew install kotlin

インストールに成功したら、下記でREPLが起動できます。

$ kotlinc

 

基本データ型

まずは、基本的なデータ型を紹介します。

説明
Double 64ビット浮動小数点数 123.4 / 123.4e5
Float 32ビット浮動小数点数 123.4f / 123.4F
Long 64ビット整数 1234 / 1234L
Int 32ビット整数 1234 / 0xAB / 0b1010
Short 16ビット整数 1234 / 0xAB / 0b1010
Byte 8ビット整数 123 / 0x0F / 0b1010
Boolean 真偽値 true / false
Char 文字 ‘a’ / ‘0’
String 文字列 “Hello World\n” / “””hoge fuga”””

注意点としては、下記のようにビット幅が小さい型の変数をビット幅が大きい型の変数に代入するときであっても、暗黙的型変換は行われません。(Javaでは可能です)

>>> val intVal: Int = 1234
>>> val longVal: Long = intVal
error: type mismatch: inferred type is Int but Long was expected
val longVal: Long = intVal
                    ^

Kotlinではこのような場合であっても、明示的に型変換をする必要があります。

>>> val intVal: Int = 1234
>>> val longVal: Long = intVal.toLong()

基本的なデータ型意外にも、配列、リスト、マップ、セットなどもありますが、これらの型については、次回にでもご紹介したいと思います。

 

変数

既に上記で変数が使われていますが、ここで改めて変数の宣言方法を説明します。

KotlinはJavaと同じく静的型付け言語となっていますので、変数にはあらかじめ代入することのできる型を定めておく必要があります。

再代入可の変数(var)と不可の変数(val)があり、下記のように宣言します。

var 変数名: 型 = 式
val 変数名: 型 = 式

下記のREPLの実行結果のようにvarの場合は、再代入が可能ですが、valで再代入を行おうとするとエラーになります。

>>> var intVar: Int = 1234
>>> intVar
1234
>>> intVar = 4321
>>> intVar
4321
>>> val intVal: Int = 1234
>>> intVal
1234
>>> intVal = 4321
java.lang.IllegalAccessError: tried to access field Line9.intVal from class Line11

>>> intVal
1234

なお、Swiftと同様にKotlinにも宣言時の型推論があります。下記の2つはともにString型のgreeting変数となります。

>>> val greeting: String = "Hello!!"
val greeting = "Hello!!"

型推論を多様するとSwiftと同様にコンパイル時に時間がかかる可能性があるので、多用する場合は、よく調べてからのがよいと思います。

また、ここで文字列結合と文字列リテラルに式(変数)を埋め込む方法も紹介しておきます。

※文字列リテラルないで式部分の境界が明確である場合は、波括弧{}を省略できます。

>>> val name = "Yamada Taro"
>>> "Hello, " + name
Hello, Yamada Taro
>>> "Hello, ${name}"
Hello, Yamada Taro
>>> "Hello, $name"
Hello, Yamada Taro

 

条件分岐 if式

if式に関しては、改めて記載するまでもなく下記のような書き方になります。

>>> val pageView: Int = 10000
>>> if (pageView > 10000) {
...   print("Wow!!")
... } else if (pageView > 5000) {
...   print("Good!!")
... } else {
...   print("OK")
... }
Good!!

Kotlinにおいて、if式の面白いのは、最後に評価された値が返却されるというところにあり、下記のように使えます。

>>> val score: Int = 80
>>> val resultMessage = if (score >= 80) "Grade A" else if (score >= 60) "Grade B" else "Grade C"
>>> resultMessage
Grade A

 

条件分岐 when式

Javaで言うところのswitch文になりますが、Javaのswitch文と異なり、条件分岐の部分に式をかけたり、breakを明示的に記述する必要がなかったりします。また、if式と同じように最後に評価された値が返却されます。基本的な利用例だけ記載します。

>>> val grade = "B"
>>> val message = when (grade) {
...     "A" -> "Excellent"
...     "B", "C" -> "Good"
...     "D" -> "Bad"
...     else -> "Unknown"
... }
>>> message
Good

 

繰り返し制御 while文

基本的にJavaと同じです、do-while文もありますが、while文だけ例を記載しておきます。

>>> var count = 0
>>> while (count++ < 10) {
...   println("count is $count")
... }
count is 1
count is 2
count is 3
count is 4
count is 5
count is 6
count is 7
count is 8
count is 9
count is 10

 

繰り返し制御 for文

for文の使い方もJavaと同様になりますが、いくつか例を記載しておきます。配列、レンジが使われていますが、そちらも今後のブログで紹介していきます。

>>> for (greeting in arrayOf("Hello", "Bye", "See you")) {
...   println(greeting)
... }
Hello
Bye
See you

>>> for (i in 1..10) {
...   println("count is $i")
... }
count is 1
count is 2
count is 3
count is 4
count is 5
count is 6
count is 7
count is 8
count is 9
count is 10

 

さいごに

いかがでしたでしょうか。今回は、Kotlinの本当に基本的な文法だけの紹介になります。今後は、配列、リスト、マップやNull安全などもブログで紹介してきますので、ぜひまたお読みいただければと思います。

おすすめ書籍

   

原弘

twitter: @hir_hara

シェア
執筆者:
原弘
タグ: Kotlin

最近の投稿

フロントエンドで動画デコレーション&レンダリング

はじめに 今回は、以下のように…

2週間 前

Goのクエリビルダー goqu を使ってみる

はじめに 最近携わっているとあ…

3週間 前

【Xcode15】プライバシーマニフェスト対応に備えて

はじめに こんにちは、suzu…

2か月 前

FSMを使った状態管理をGoで実装する

はじめに 一般的なアプリケーシ…

3か月 前