ユーザ用ツール

サイト用ツール


kotlin:enumとsealed

差分

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

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

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
kotlin:enumとsealed [2019/12/10 07:42]
ips
kotlin:enumとsealed [2019/12/10 08:18] (現在)
ips [enumのは代数的データ型(ADT)]
ライン 54: ライン 54:
 </​code>​ </​code>​
  
-==== enumの条件でelseが不要 ​====+==== enumのは代数的データ型(ADT) ​==== 
 + 
 +代数的データ型(Algebraic data type)とは、その型に割当可能なサブタイプの閉集合を表現できる複合型。 
 +GEARはLOW,​MIDDLE,​HIという閉集合を表現している。 
 +つまりGEARは3つの値しかない。 
 + 
 +<wrap hi>​通常下記のような場合はELSEがなければコンパイルエラーとなるが、 
 +ELSEがなくても3つの条件をつければコンパイルが通る。 
 +(コンパイラーは3つしか条件がないことをわ分かっている。=閉集合)</​wrap>​ 
  
-GEARクラスにはLOW,​MIDDLE,​HIしかないことがわかっているのでIFやWHENでELSEが不要となる。 
  
 <​code>​ <​code>​
ライン 63: ライン 71:
     MIDDLE(60),     MIDDLE(60),
     HI(100);     HI(100);
-    fun Accelerator(){ 
-        println(speed) 
-    } 
 } }
  
ライン 73: ライン 78:
 fun main(){ fun main(){
     val civic = CAR(GEAR.MIDDLE)     val civic = CAR(GEAR.MIDDLE)
-    when (civic.gear){ +    ​// LOW,​MIDDLE,​HI全てを条件にするかELSEがなければエラーになる。 
-        GEAR.LOW -> println("too slow") +    val message ​ = when (civic.gear){  
-        GEAR.MIDDLE -> println("just right") +        GEAR.LOW -> "too slow"​ 
-        GEAR.HI -> println("too fast")+//        ​GEAR.MIDDLE -> "just right"​ // コメントをはずせばELSE不要 
 +//        ​GEAR.HI -> "too fast"​ // コメントをはずせばELSE不要
     }     }
 +    println(message)
 } }
 </​code>​ </​code>​
 +{{:​kotlin:​pasted:​20191210-080738.png}}
kotlin/enumとsealed.1575931333.txt.gz · 最終更新: 2019/12/10 07:42 by ips