是更好地做:在Haskell使用multine模式縮短函數定義
charToAction 'q' = Just $ WalkRight False
charToAction 'd' = Just $ WalkRight True
charToAction 'z' = Just Jump
charToAction _ = Nothing
或
charToAction x = case x of
'q' -> Just $ WalkRight False
'd' -> Just $ WalkRight True
'z' -> Just Jump
_ -> Nothing
?
你最喜歡哪一個?這兩種解決方案都沒有性能差異。就語法而言,隨你喜歡的人一起去吧。 –
如果,案件,警衛,模式匹配,我被這些撕裂了! – L01man
'if'和警衛不是很好的選擇,但你所問的兩個確實是等價的 - 事實上,GHC會在第一個彙編中的case中聲明一個函數的不同模式無論如何。 – leftaroundabout