Dưới đây là một đoạn mã từ cuốn sách của tôi, và tôi không chắc chắn về cách các công trình phù hợp rõ ràng vì có vẻ như trường hợp đầu tiên khớp với mọi thứ. Dưới đây là các cảnh báo mà Ocaml ném cho tôi:Tại sao mẫu OCaml `zero -> zero` dường như phù hợp với mọi thứ?
# 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
Bạn có thể sử dụng hằng nếu bạn làm một cái gì đó như 'x nơi x == zero' (cú pháp chính xác thoát tôi mặc dù) – hugomg
Bạn có thể sử dụng' khi' để thêm một thử nghiệm bổ sung cho một trận đấu, nhưng nó không thay đổi ý nghĩa của mẫu. Nếu mẫu của bạn chỉ là một định danh, thì đây chỉ là một cách khác để viết một câu lệnh 'if' (không có gì sai với câu lệnh' if', đó là những gì bạn có thể sử dụng để kiểm tra các hằng số được đặt tên.) –
Cảm ơn bạn Jeffrey, tôi thấy điều này khá sâu sắc. –