Haskell/解決方案/後續步驟
外觀
| 練習 |
|---|
從第二版 pts 到第三版,我們稍微作弊了一下:它們並不完全相同。你能發現它們的區別嗎? |
區別在於當引數小於 1 時會發生什麼。在第二版和第三版中,它們都只會在最後匹配(分別由萬用字元模式 _ 和 x)。在第二版中,最後的結果直接計算為 0。然而,在第三版中,還有 x <= 6 條件,當引數小於 1 時,顯然是成立的;因此結果將是 7 - x。因此,例如 pts (-4) 在第二版中計算為 0,而在第三版中計算為 11。
注意:在文字的腳註中,我們聲稱對於這個例子,我們不會太擔心如果 pts 被賦予了無意義的輸入會發生什麼;儘管如此,像這樣的極端情況是我們在編寫“真實”程式碼時容易犯錯的一種情況。換句話說:它可能會對你的程式造成影響,所以要保持警惕。
以下是對第三版的變體,它與第二版完全等效
pts :: Int -> Int
pts 1 = 10
pts 2 = 6
pts x
| x < 1 || x > 7 = 0
| otherwise = 7 - x