2016-11-19 7 views
0

私はScalaを初めて使っていますが、OCamlと他のMLファミリの関数型プログラミング言語を使用した経験があります。ScalaでOCamlスタイルの型のバリエーションを定義する

OCamlスタイルタイプのバリアントをどのように定義できますか?たとえば、

type fruit = Apple | Orange | Strawberry 
let analysis f = 
    match f with 
    | Apple -> ... 
    | Orange -> ... 
    | Strawberry -> ... 

この質問があまりにも素朴であれば申し訳ありません。誰かが私に助けてくれることを願っています。

+0

を参照してくださいhttp://stackoverflow.com/questions/33384189/type-to-capture-either-integer-float-or-a-string-value-and-then-do-pattern-matc –

答えて

1

私はOCamlについてよく分かりませんが、このようなことをしようとしているようです。

sealed abstract class Fruit 
class Apple extends Fruit 
class Orange extends Fruit 
class Strawberry extends Fruit 

def mixFruit(f: Fruit) = f match { 
    case a: Apple =>  // do something with a 
    case o: Orange =>  // do something with o 
    case s: Strawberry => // do something with s 
} 
+0

のためにこの場合、それはむしろ「オブジェクトアップル」などです。 –

関連する問題