這是我書中的代碼片段,我不確定匹配是如何工作的,因爲它似乎是第一個匹配所有內容的案例。以下是Ocaml向我發出的警告:爲什麼OCaml模式「zero - > zero」似乎匹配所有內容?
# let zero = 0;;
# let one = 1;;
# let rec fib i =
match i with
zero -> zero
| one -> one
| j -> fib (j - 2) + fib (j - 1);;
Characters 57-60:
Warning: this match case is unused.
Characters 74-75:
Warning: this match case is unused.
| one -> one
^^^
| j -> fib (j - 2) + fib (j - 1);;
^
val fib : int -> int = <fun>
# fib 1;;
- : int = 1
# fib 2002;;
- : int = 2002
結果您可以使用常量忽略,如果你做一些像'x where x == zero'(精確的語法雖然逃過了我) – hugomg 2012-01-30 03:17:07
你可以使用'when'來爲一個匹配添加額外的測試,但它不會改變模式的含義。一個額外的測試,如果你的模式只是一個標識符,這只是另一種編寫'if'語句的方法(if語句沒什麼問題,你可能用它來測試命名常量) – 2012-01-30 03:23:00
你傑弗裏,我發現這很漂亮見地。 – 2012-01-30 04:38:31