【プログラミング】【Kotlin】Kotlin Lesson Vol.2 - Kotlinの文法:変数

in #promari5 years ago (edited)

cpuji5pk2a.png

はじめに

前回は、はじめてのKotlinアプリケーションを作成しました。今回からKotlinの文法について説明していきます。以下は前回までの記事です。

第2章:Kotlinの文法

2.1 変数

2.1.1 変更可能(ミュータブル)な変数:var

Kotlinで変数を宣言するには、varキーワードを使用します。varは変更可能(ミュータブル)な変数です。Javaの(finalではない)通常の変数の宣言です。

// varは変更可能(ミュータブル)な変数
var user: String = "tamito0201" // Kotlinでは文の終わりにセミコロンは不要です。

2.1.2 変更不可能(イミュータブル)な変数:val

定数を宣言するには、valキーワードを使用します。 valで宣言された変数は、一度初期化されると、値を変更することはできません。Javaでいうfinalと同じです(※1)。

// valは変更不可能(イミュータブル)な変数
val CONNECT_TIMEOUT: Int = 3000

valは、変更不可にすべき変数を、プログラマが間違って変更してしまうことを防ぐ目的として使用されます。このため、変更可能な変数varを使う必要がないときは、必ずvalを使用すべきです。コードを書くときはvalを使用するクセをつけましょう。

統合開発環境であるIntelliJ IDEAは、コードを分析して、varの代わりにvalを使うべきケースを検出するすぐれものです。

f4get44iw5.png

「Variable is never modified and can be declared immutable using 'val' more...」といいうメッセージで、変数は変更されないのでimmutable(イミュータブル)なvalとして宣言すべきと提案してくれます。これを変更するには「Alt」+「Return」(Windowsの場合)を押すと、

yw4ox40e4u.png

valに変更してくれます。

ajz4021n3n.png

さきほどvalは変更不可能な変数と説明しましたが、例外があります。valで宣言された変数の参照自体イミュータブル(変更不可能)ですが、それが指すオブジェクトはミュータブルになりえます。以下のようなListの場合。listが指すオブジェクトの値は変更可能です。

val list = arrayListOf("promari", "programming")
list.add("lesson")

println(list) // [promari, programming, lesson]
  • ※1 : Java10からはvarによる型を省略して変数宣言が可能です。

2.2 型推論(type inference)

Kotlinでは型推論(type inference)が可能なので、宣言時に値が代入される変数については、型を省略して変数を定義することもできます。型推論とはプログラマが型を明記しなくても代入式などから、コンパイラが文脈から推論して付くべき型を自動で推論してくれる機能です。

val CONNECT_TIMEOUT = 3000

のように書くこともできます。どういういうことがと申しますと、右辺はint型のデータであることが分かっているため、わざわざ変数名にIntと明示しなくても、コンパイラが自動的に型を推論してくれるのです。

型推論を持っている言語は、Kotlin以外に、Haskell、ML、Vala、C#、Scala、Objective Caml、D言語などがあります。

2.3 演習

変数(radius)と定数(PI)を用いて円の面積を計算するプログラムを作成しましょう。

おわりに

次回は、関数について説明したいと思います。

プロマリはあなたのエンジニアデビューをサポートします。

t0r78hqbeu.png
written by たみと@promari

プログラミングとのご縁結びならプロマリへ。

オンラインプログラミング学習スクールのプロマリは、プログラミングの初学者の皆様を応援しています。プログラミング講師と一緒に面白いアプリを作りませんか。

btpb5hmlur.png

The programming school "Promari" will help you learn programming. "Promari" is supporting the first scholars of programming. Let's develop an application with our programming instructor.

Coin Marketplace

STEEM 0.17
TRX 0.12
JST 0.027
BTC 61414.81
ETH 2984.62
USDT 1.00
SBD 2.46