3
有沒有一種方法來模式匹配獨立於構造函數arity的構造函數?有時在模式匹配中,我只關心構造函數而不關心與之相關的數據。Ocaml模式匹配數據構造函數獨立於其構造
我擔心的是,當我在ADT中更改構造函數的構造函數時,我必須通過並更改所有模式匹配,即使丟棄所有「字段」(什麼是正確的術語?)數據構造函數。
假設我有多個構造
(* time * message *)
type log_message =
Warning of float * string
| Error of float * string
的ADT,我要檢查這種類型的值,而是隻關心構造我寫類似
let is_error_message x = match x with
| Warning _, _ -> false
| Error _, _ -> true
如果後來我想回去添加嚴重性字段來警告,給我
type log_message =
Warning of float * string * int
| Error of float * string
我必須在is_error_message
的模式中添加一個新的通配符來滿足類型檢查器。
let is_error_message x = match x with
| Warning _, _, _ -> false
| Error _, _ -> true
我想我的意思是說'(*浮動字符串)'&C ...用於多參數的構造函數,而不是一元的構造函數警告服用我搞砸語法的元組... (然後不知道爲什麼'Warning _ _'無效)。你所說的完全正確,但我不想只是靜靜地解決這個問題。 –
這是不正確的,正則構造函數的參數不是元組。 '_'可以匹配多個參數的原因是因爲它已被添加爲一個功能來覆蓋此用例。 – gsg
@gsg哪個版本加入了? –