Oz 中缺少 else 子句
Posted
技术标签:
【中文标题】Oz 中缺少 else 子句【英文标题】:Missing else clause in Oz 【发布时间】:2014-11-27 18:43:23 【问题描述】:当我尝试编译此代码时,Oz 编译器会启动异常“缺少其他子句”,谁能告诉我为什么?这是我的代码:
declare
fun Numero x y
local NumeroAux in
fun NumeroAux x y Acc
if And (x == 0) (y == 0) then Acc
else
if y == 0 then NumeroAux 0 x-1 Acc+1
else
NumeroAux x+1 y-1 Acc+1
end
end
end
NumeroAux x y 0
end
end
Browse Numero 0 0
在我看来,这段代码中没有缺少 else 子句!我的函数总会返回一些东西。
【问题讨论】:
终于发现错误了..我忘记了 Oz 中的变量必须以大写字母开头...但我不明白为什么 Oz 编译器会说“缺少其他条款”而不是“变量必须以大写字母开头"... 【参考方案1】:在 Oz 语言中,所有变量都需要大写。小写是原子的。 因此,如果您尝试使用大写字母运行代码:
declare
fun Numero X Y
local NumeroAux in
fun NumeroAux X Y Acc
if And (X == 0) (Y == 0) then Acc
else
if Y == 0 then NumeroAux 0 X-1 Acc+1
else
NumeroAux X+1 Y-1 Acc+1
end
end
end
NumeroAux Y X 0
end
end
Browse Numero 0 0
这将按预期浏览 0。
【讨论】:
以上是关于Oz 中缺少 else 子句的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server:IF .. ELSE 中的 Where 子句