2012-10-22 52 views
3

我剛剛開始寫OCaml代碼,因此這可能是一個天真的問題。但我自己無法弄清楚這一點。得到一個類型的內部值OCaml

我在OCaml中有以下類型聲明。

type myType = 
| Int of int 

現在我有一個myType類型的對象。

有沒有辦法訪問這個對象持有的int值?如果是,如何?

+2

順便說一句,'object'是在此方面不正確的說法。我認爲你應該說'myType的價值。 OCaml允許OOP和對象是一個術語的另一個實體。但是對象也是價值。 – Kakadu

+2

如果你的教材在突出的地方沒有包括這個問題的答案,你需要獲得更好的材料。看看這個StackOverflow問題,[你會建議學習OCaml的英文教程?](http://stackoverflow.com/q/9358553/298143),以獲取指針。 – gasche

回答

7

你需要的是從聯盟類型的價值得到int值。在OCaml中,我們經常使用模式匹配來分解和轉化價值:

let get_int v = 
    match v with 
    | Int i -> i 

當您嘗試OCaml中頂級的功能,你喜歡的東西:

# let v = Int 3;; 
val v : myType = Int 3 
# get_int v;; 
- : int = 3 

如果你的工會類型有更多的情況下,只需將更多模式添加到get_int函數中,並以適當的方式處理它們。

對於單工會的情況下喜歡你的例子,你可以做圖案直接在他們的價值觀匹配:

# let (Int i) = v in i;; 
- : int = 3 
+0

謝謝!這節省了很多時間! – CPS

5

您可以使用模式匹配訪問值:

match value_of_my_type with 
| Int i -> do_something_with i