作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Possible Duplicate:
Haskell “do nothing” IO, or if without else
这些“简单”的行出了问题......
action = do
isdir <- doesDirectoryExist path -- check if directory exists.
if(not isdir)
then do handleWrong
doOtherActions -- compiling ERROR here.
GHCi 会提示标识符,或者在我添加 else do
后不执行最后一行操作.
我认为异常处理可能有效,但是在这种常见的“检查并执行某些操作”语句中是否有必要?
谢谢。
最佳答案
Haskell 中的
if
必须始终有一个 then
和一个 else
。所以这会起作用:
action = do
isdir <- doesDirectoryExist path
if not isdir
then handleWrong
else return () -- i.e. do nothing
doOtherActions
同样,您可以使用 Control.Monad 中的 when
:
action = do
isdir <- doesDirectoryExist path
when (not isdir) handleWrong
doOtherActions
Control.Monad 也有除非
:
action = do
isdir <- doesDirectoryExist path
unless isdir handleWrong
doOtherActions
<小时/>
请注意,当您尝试时
action = do
isdir <- doesDirectoryExist path
if(not isdir)
then do handleWrong
else do
doOtherActions
它被解析为
action = do
isdir <- doesDirectoryExist path
if(not isdir)
then do handleWrong
else do doOtherActions
关于Haskell - "How can I use "if”语句在 "do" block 中正确吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5920888/
我是一名优秀的程序员,十分优秀!