如何將字符串選項數據類型轉換爲Ocaml中的字符串?字符串轉換的字符串選項
let function1 data =
match data with
None -> ""
| Some str -> str
我的執行沒有錯誤嗎?這裏'數據'的類型值爲string option
。
如何將字符串選項數據類型轉換爲Ocaml中的字符串?字符串轉換的字符串選項
let function1 data =
match data with
None -> ""
| Some str -> str
我的執行沒有錯誤嗎?這裏'數據'的類型值爲string option
。
要回答你的問題,是的。
對於這個簡單的功能,您可以在Option
模塊中輕鬆找到它。例如,Option.default
完全適合你的目的:
let get_string data =
Option.default "" data
還有很多其他有用的功能在module與選項類型的工作,你應該檢查出來,以避免不必要的重新定義功能。
請注意,Option僅在ExtLib中可用,並且不在標準庫中提供。 –
謝謝大家!我只是發現錯誤在別的地方。但我確實在選擇模塊方面學到了一些新東西。 –
'default'現在在'BatOption'(電池包)中。請參閱[this](http://stackoverflow.com/questions/9914219/where-can-i-find-the-ocaml-option-module)。 –
另一點是編譯器會告訴你是否有什麼問題。如果編譯器沒有抱怨,那麼您知道這些類型都是有意義的,並且您已經覆蓋了您的match
表達式中的每個案例。 OCaml類型系統非常擅長於在發現問題的同時保持自己的方式。請注意,在這個小例子中,您不必自己定義任何類型 - 編譯器會推斷出data
的類型爲string option
。
編譯器無法檢測到的很多問題都是我們無法檢測到的問題。我們不知道將None
映射到空字符串是否是您真正想要執行的操作,儘管它看起來非常合理。
謝謝大家!我只是發現錯誤在別的地方。但我確實在選擇模塊方面學到了一些新東西。 –
當然。如果你想確認,你可以在一些值上測試它,包括'None'和'Some(「foo」)'。 –
取決於你的意思是沒有錯誤的。它在這個上下文中沒有明顯的錯誤,但是如果在空字符串上使用它和barf的東西(或者在面對None時期望有不同的選擇),那麼它顯然被破壞了。 – stonemetal