joh*_*321 5 haskell functional-programming pattern-matching conditional-statements
用外行的话来说,模式匹配的好处到底是什么,除了历史原因之外?我遇到的答案大多超出了我的水平(例如,我不了解与此有关的堆分配)。
我有Python背景,直到最近才再次接触Haskell。
因此,我很难理解在其他语言环境中给出的其他答案。
chi*_*chi 10
使用模式匹配而不是条件匹配的最有用的方面之一是允许API仅涉及全部操作,即,永远不会导致运行时异常/错误的操作。
考虑一下此代码,利用一个假设函数runOperationOn,返回Maybe String。
case runOperationOn someData of
Just res -> putStrLn ("The operation was successful: " ++ res)
Nothing -> putStrLn "The operation failed!"
Run Code Online (Sandbox Code Playgroud)
这里,模式匹配允许检查操作是否成功,并获得成功的结果,在同一时间。最后一部分至关重要。使用布尔值,我们将需要使用类似以下内容的方法:
if canRunOperationOn someData
then putStrLn ("The operation was successful: " ++ doRunOperationOn someData)
else putStrLn "The operation failed!"
Run Code Online (Sandbox Code Playgroud)
这看起来很相似,但是与模式匹配相比有很多缺点:
doRunOperationOnString后者相当糟糕,因为这给程序员带来了负担,程序员必须记住问“我可以吗?”,否则就有崩溃的危险。
| 归档时间: |
|
| 查看次数: |
90 次 |
| 最近记录: |