8. 構造体(匿名オブジェクト)
var point = { x : 1, y : -5 }; // 型 {x:Int, y:Int}
!
typedef Point = {x:Int, y:Int} // Point 型を宣言
var point:Point = { x : 1, y : -5 };
9. 構造的部分型
typedef Point = { x : Int, y : Int }
typedef Point3D = { x : Int, y : Int, z : Int }
!
var p3d:Point3D = { x : 0, y : 0, z : 0 };
var pt:Point = p3d; // OK
10. 関数型
var func = function(a:String, b:String):String{
return a + b;
};
型 は String -> String -> String
13. クラス宣言
class Todo {
public var summary(default, default):String;
public function new(summary:String) {
this.summary = summary;
}
public function hoge():String {
return hoge ;
}
}
プロパティ
コンストラクタ
メソッド
23. switch
var value = switch(flag){
case 0: java";
case 1: scala ;
case 2: groovy ;
default: other ;
}
24. パターンマッチ - enum
enum Info {
Empty;
Text(data:String);
}
function test(info: Info):String {
return switch(info){
case Empty: empty ;
case Text(data): data;
}
パラメータ
25. パターンマッチ - 構造体
var value = { lang: java , ver: 8};
var text = switch(value){
case {lang: java , ver:8}: latest ;
case {lang: java , ver:v} if (v > 8): error ;
case {lang: java , ver:v} : Std.string(v);
case _: other ;
}
26. パターンマッチ - ガード
var value = { lang: java , ver: 8};
var text = switch(value){
case {lang: java , ver:8}: latest ;
case {lang: java , ver:v} if (v > 8): error ;
case {lang: java , ver:v} : Std.string(v);
case _: other ;
}
ガード