ユーザ用ツール

サイト用ツール


kotlin:enumとsealed

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
kotlin:enumとsealed [2019/12/10 07:35]
ips
kotlin:enumとsealed [2019/12/10 08:18] (現在)
ips [enumのは代数的データ型(ADT)]
ライン 53: ライン 53:
 100 100
 </​code>​ </​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.1575930925.txt.gz · 最終更新: 2019/12/10 07:35 by ips