KotlinDive

プログラミング言語 Kotlin についての入門ブログです。

Kotlin入門

1. Kotlin Diveについて このブログ「Kotlin Dive」は、プログラミング言語「Kotlin」の入門サイトです。 2. 目次 Kotlinについて 開発環境とHello World!(準備中) 忙しい人のための基本的なコードスニペット集 標準コーディングスタイル データ型(数値、真…

ジャンプ

ジャンプとは ジャンプとは、分岐や繰り返しなどの制御フローの途中に挿入することで、 関数やループを途中で抜けたり、あるいは特定の条件のときにループをスキップしたりすることができます。 Kotlinには制御をジャンプするために、次の式が用意されていま…

クラス(列挙型)

列挙型の使い方 列挙型の最も基本的な使い方は次のようになります。 fun main(args: Array) { printState(State.Run) } // 列挙型の宣言 enum class State { Stop, Run, Suspend } fun printState(state: State) = when(state) { State.Stop-> println("Stop…

クラス(オブジェクト)

オブジェクトとは 多くのプログラミング言語では、「オブジェクト」といえは、 インスタンス化されたクラスの実際のデータを指します。 つまり、インスタンスとオブジェクトは同じ意味で使われています。 しかし、Kotlinでは「オブジェクト」というと別のこ…

リフレクション

リフレクションとは リフレクションとは、プログラム内で宣言したクラスや関数、プロパティなどから、 それら自身の名前などの情報をプログラムの実行時に取得することです。 Kotlinでは、主に「::」を使ってリフレクションを取得します。 クラス クラスのリ…

クラス(データクラス)

Data Transfer Object アプリを作成していると、単純にひとまとまりのデータを保持しておきたい場合があります。 たとえば、データベースから関連するデータを取り出して(いはゆるモデル層)、画面に表示する(いわゆるビュー層)場合などです。 このように、モ…

クラス(エクステンション)

エクステンション 既存のクラスの機能を拡張する基本的な方法は、そのクラスを継承して派生クラスを作成することです。 しかし、Kottlinでは継承以外にもクラスの機能を拡張する方法があります。 これを、「エクステンション」といいます。 「エクステンショ…

クラス(抽象クラス/インターフェース)

抽象クラス クラスのメンバーにキーワード「abstract」をつけて宣言することができます。 これを抽象メンバーと言います。 抽象メンバーは処理や値といった具体的な実装を持ちません(持つことができません) 抽象メンバを持つクラスを抽象クラスと呼び、この…

クラス(オーバーライド)

メソッド Kotlinでは、オーバーライド可能なメンバーには明示的に「open」キーワードを付けなければいけません。 また、子クラスで実際にオーバーライドしているメンバーには「override」キーワードを付ける必要があります。 fun main(args: Array) { val st…

クラス(ヴィジビリティ)

ヴィジビリティ修飾子 クラス、オブジェクト、インターフェース、コンストラクタ、関数、プロパティとそのセッターに対して、ヴィジビリティを設定することができます。 (ゲッターのヴィジビリティはプロパティのヴィジビリティと同じものになります) Kotlin…

クラス(継承)

Any Kotlinでは、すべてのクラスは「Any」クラスを継承しています。 特に、親クラスについて指定していないクラスも、暗黙的に「Any」クラスを継承します。 なお、この「Any」はJavaの「java.lang.Object」とは別のクラスです。 「Any」には「equals()」「ha…

クラス(プロパティ)

プロパティの宣言 クラスのボディに「val」キーワードで宣言すると読取り専用で、 「var」キーワードで宣言すると変数としてプロパティを宣言できます。 プロパティは必ず初期化しないといけません。初期化は「プロパティイニシャライザ」か「イニシャライザ…

クラス(コンストラクタ)

クラスの宣言とクラスメンバ クラスは「class」キーワードで宣言します。 クラスは、メンバと呼ばれる以下の要素で構成されます。 メンバ 内容 コンストラクタイニシャライザブロック インスタンスの初期化 関数 Javaでいうメソッド プロパティ Javaでいうメ…

例外

例外 Kotlinでは、例外クラスはすべて「Throwable」クラスを継承しています。 例外クラスは必ずメッセージとスタックトレースを持っています。 また、任意で例外がスローされた原因についての情報も持つことができます。 例外をスローするためには、「throw…

ラムダ式と匿名関数

匿名関数 ラムダ式では返り値の型を明示的に指定することができません。 明示的に指定できなくても、自動的に推測してくれるため、大抵の場合は問題ありません。 しかし、何らかの事情で返り値の型を明示的に指定したい場合、「匿名関数」を利用することがで…

ラムダ式の基本

高階関数 高階関数とは、ある関数を引数に持つような関数のことです。 関数を引数として渡すというのは、もう少し言うと関数の参照を渡すということです。 関数の参照は、関数名の前に「::」をつけることで取得できます。 例えば、次のサンプルのgetNonNull…

型チェックとキャスト

is ある変数の実体の型が何であるかを判定するためには「is」演算子を利用します。 is演算子でチェックされた変数は、自動的に判定された型にキャストされます。 これをスマートキャストといいます。 fun main(args: Array) { val str = "string" val obj: A…

null安全

null安全について JavaやC++、Objective-Cなどの言語では、プログラムを実行するまでオブジェクトがnullであるかどうかがわからない場合があります。 そのため、プログラマーは手動でオブジェクトがnullでないことをチェックするコードを作成して対策する必…

レンジ

レンジの基本的な使い方 レンジは数値の範囲を表すために利用する式です。 「..」演算子や「..」演算子に対応する関数である「rangeTo()」関数を「in」キーワードと組み合わせて利用します。 「a..b」で「aからbの間」という意味になります。 比較で利用する…

繰り返し(for、while)

for kotlinでのforはC#のforeachのようにコレクションの要素に順番にアクセスできます。 もちろん、C言語などでよくあるN回繰り返すというような処理も可能です。 そのような場合にはレンジを利用します。 fun main(args: Array) { val fruits = listOf("app…

条件分岐(if、when)

if 基本的な使い方 Kotlinでは、ifは式として機能しています。 つまり、ifが値を返して、その値をそのまま変数に代入したりできるということです。 もちろん、通常の条件分岐としても利用できます。 fun main(args: Array) { // 通常の使い方 val num = 10 i…

コレクション

Kotlinのコレクション Kotlinでは、他の多くの言語と違い、コレクションがミュータブル(可変)であるかイミュータブル(不変)であるかを厳密に区別します。 イミュータブルなコレクションでは、sizeやgetなどの読み取り操作は可能ですが、要素の書き換えなどは…

関数

関数の基本的な使い方 Kotlinでは、「fun」キーワードで関数を宣言します。 fun 関数名(引数1: 引数1の型, 引数2: 引数2の型): 戻り値の型 { // 処理 return 戻り値 } 引数や戻り値は、それらがなければ省略することができます。 fun 関数名() { // 処理 } …

データ型(文字、文字列)

1. 文字型 Charが文字型です。C言語などと違い、直接的に数値として扱うことはできません。 文字リテラルはシングルクォートで囲います。 バックスラッシュを利用することで、エスケープシーケンスを利用することもできます。 \t 水平タブ \b バックスペース…

基本的な演算

1. 演算子 Kotlinでは一般的な演算がサポートされています。 それぞれの演算子には対応する予め決められたメンバ関数かエクステンション関数があります。 operator修飾子をつけて、これらの関数をオーバーロードすることができます。 2. 単項演算子 他のプロ…

データ型(数値、真偽値、配列)

1. Kotlinのデータ型 Kotlinでは、基本的にすべてメンバ関数やプロパティといったものを備えるオブジェクトとして扱われます。 数値型やブール型、文字列型などは実行時にはプリミティブとして扱われますが、 プログラマーとしては通常のクラスと同じように…

標準コーディングスタイル

1. Kotlinのコーディングスタイル Kotlinにはオフィシャルなコーディングスタイルがあります。 基本的にはこのコーディングスタイルに従ってコーディングするのがいいでしょう。 標準コーディングスタイル(公式サイト) 2. ソースコード まずは、ディレクト…

忙しい人のための基本的なコードスニペット集

1. 基本的なコードスニペット 忙しい人や、Kotlinの雰囲気を知りたい人のためにKotlinの基本的な書き方のスニペットを集めました。 1-1. パッケージとインポート package testpackage fun testprint() { println("test print.") } import testpackage.* fun …

Kotlinについて

1. Kotlinとは何か? Kotlin(コトリン)はロシアのJetBrains社によって開発された モダンなマルチプラットフォームアプリ向けの静的型付けなプログラミング言語です。 公式サイト 公式サイトのドキュメントなど 2. Kotlinで何ができるのか? Webアプリではク…