内容へ移動
猫型iPS細胞研究所
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
現在位置:
INDEX
»
kotlin
»
enumとsealed
トレース:
kotlin:enumとsealed
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== enumとsealed ====== ===== enumクラス ===== GEARクラスのLOW,MIDDLE,HIというインスタンスということを宣言している。 ==== enumの基本 ==== <code kotlin> enum class GEAR(){ LOW, MIDDLE, HI } fun main(){ println(GEAR.HI) } ↓ HI </code> ==== enumのコンストラクタ ==== <code kotlin> enum class GEAR(val speed:Int){ // クラスなのでコンストラクタにプロパティの宣言ができる。 LOW(10), MIDDLE(60), HI(100) } fun main(){ println(GEAR.HI.speed) } ↓ 100 </code> ==== enumの関数宣言 ==== <code kotlin> enum class GEAR(val speed:Int){ LOW(10), MIDDLE(60), HI(100); // 「;」で区切る // クラスなので関数宣言ができる fun Accelerator(){ println(speed) } } fun main(){ GEAR.HI.Accelerator() } ↓ 100 </code> ==== enumのは代数的データ型(ADT) ==== 代数的データ型(Algebraic data type)とは、その型に割当可能なサブタイプの閉集合を表現できる複合型。 GEARはLOW,MIDDLE,HIという閉集合を表現している。 つまりGEARは3つの値しかない。 <wrap hi>通常下記のような場合はELSEがなければコンパイルエラーとなるが、 ELSEがなくても3つの条件をつければコンパイルが通る。 (コンパイラーは3つしか条件がないことをわ分かっている。=閉集合)</wrap> <code> enum class GEAR(val speed:Int){ LOW(10), MIDDLE(60), HI(100); } class CAR(val gear: GEAR){ } fun main(){ val civic = CAR(GEAR.MIDDLE) // LOW,MIDDLE,HI全てを条件にするかELSEがなければエラーになる。 val message = when (civic.gear){ GEAR.LOW -> "too slow" // GEAR.MIDDLE -> "just right" // コメントをはずせばELSE不要 // GEAR.HI -> "too fast" // コメントをはずせばELSE不要 } println(message) } </code> {{:kotlin:pasted:20191210-080738.png}}
kotlin/enumとsealed.txt
· 最終更新: 2019/12/10 08:18 by
ips
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ