使用haskell中的多模式缩短函数定义

L01*_*man 1 haskell function pattern-matching

做得更好:

charToAction 'q' = Just $ WalkRight False
charToAction 'd' = Just $ WalkRight True
charToAction 'z' = Just Jump
charToAction _ = Nothing
Run Code Online (Sandbox Code Playgroud)

要么

charToAction x = case x of
    'q' -> Just $ WalkRight False
    'd' -> Just $ WalkRight True
    'z' -> Just Jump
    _ -> Nothing
Run Code Online (Sandbox Code Playgroud)

Cat*_*lus 8

绝对没有任何功能差异.这是个人喜好的问题.