2011-11-28 34 views
3

如何將字符串選項數據類型轉換爲Ocaml中的字符串?字符串轉換的字符串選項

let function1 data = 
    match data with 
    None -> "" 
    | Some str -> str 

我的執行沒有錯誤嗎?這裏'數據'的類型值爲string option

+1

當然。如果你想確認,你可以在一些值上測試它,包括'None'和'Some(「foo」)'。 –

+1

取決於你的意思是沒有錯誤的。它在這個上下文中沒有明顯的錯誤,但是如果在空字符串上使用它和barf的東西(或者在面對None時期望有不同的選擇),那麼它顯然被破壞了。 – stonemetal

回答

7

要回答你的問題,是的。

對於這個簡單的功能,您可以在Option模塊中輕鬆找到它。例如,Option.default完全適合你的目的:

let get_string data = 
    Option.default "" data 

還有很多其他有用的功能在module與選項類型的工作,你應該檢查出來,以避免不必要的重新定義功能。

+4

請注意,Option僅在ExtLib中可用,並且不在標準庫中提供。 –

+0

謝謝大家!我只是發現錯誤在別的地方。但我確實在選擇模塊方面學到了一些新東西。 –

+0

'default'現在在'BatOption'(電池包)中。請參閱[this](http://stackoverflow.com/questions/9914219/where-can-i-find-the-ocaml-option-module)。 –

3

另一點是編譯器會告訴你是否有什麼問題。如果編譯器沒有抱怨,那麼您知道這些類型都是有意義的,並且您已經覆蓋了您的match表達式中的每個案例。 OCaml類型系統非常擅長於在發現問題的同時保持自己的方式。請注意,在這個小例子中,您不必自己定義任何類型 - 編譯器會推斷出data的類型爲string option

編譯器無法檢測到的很多問題都是我們無法檢測到的問題。我們不知道將None映射到空字符串是否是您真正想要執行的操作,儘管它看起來非常合理。

+0

謝謝大家!我只是發現錯誤在別的地方。但我確實在選擇模塊方面學到了一些新東西。 –