Variables if块内的变量不能在Haskell中的块外使用,这是什么原因造成的?
有没有办法修复它,这样我也可以在外面使用它们? 提前谢谢。 我有这样的想法:Variables if块内的变量不能在Haskell中的块外使用,这是什么原因造成的?,variables,haskell,scope,Variables,Haskell,Scope,有没有办法修复它,这样我也可以在外面使用它们? 提前谢谢。 我有这样的想法: if(x==1) then someList<-aFunction (1,2) else someList<-aFunction (3,4) steps involving someList here if(x==1) 然后 someList您误解了Haskell中的变量:一旦定义了变量,它们就永远不会更改其值,因此如果您希望在分支内执行赋值,那是行不通的。但是
if(x==1)
then
someList<-aFunction (1,2)
else
someList<-aFunction (3,4)
steps involving someList here
if(x==1)
然后
someList您误解了Haskell中的变量:一旦定义了变量,它们就永远不会更改其值,因此如果您希望在分支内执行赋值,那是行不通的。但是,以下可能会有所帮助:
let x = if (cond) then .. else .. in f x
注意不要阅读if-then-else中的x
,除非你知道你在做什么:-)另一个提醒:如果你在这个结构中使用另一个让x=..
,它将“遮蔽”外部x
,因此它实际上是一个不同的新变量。在这种特殊情况下
someList <- aFunction (if x == 1 then (1,2) else (3,4))
someList它是由作用域引起的,你能做什么取决于你的代码,我们能看看其中的一些吗?我写了代码,但看起来我别无选择,只能把所有东西都放在if块中,用于单独的x。Thanks@DanielFischerShiDoiSi的回答实际上解决了我的问题:-)这是一个范围问题,不是一个重新定义的问题。