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 子句的主要内容,如果未能解决你的问题,请参考以下文章

查询中的错误 - 缺少表的 FROM 子句条目 - SQL

SQL Server:IF .. ELSE 中的 Where 子句

为啥在 try/except 块中使用 Python 的“else”子句? [复制]

简单的 SQL if/else 子句失败

Freemarker 模板 else 子句没有被执行

NOT IN 子句中缺少数据行