Nim-必须丢弃int的函数类型

时间:2019-07-10 18:12:47

标签: indentation nim

我是Nim的新手,为了有趣而编写了以下简单代码:

var x: int = 3
var y: int = 4
if true:
    y = 7

else:
    x = 7

proc hello(xx: int, yy: int, ): int =
    return xx + yy

hello(x, y)

该代码看起来不错(我已通过Nim手册进行了检查),但它给出了这个奇怪的错误:

c:\Users\Xilpex\Desktop\Nim_tests\testrig.nim(12, 6) Error: expression 'hello(x, y)' is of type 'int' and has to be discarded

为什么会出现此错误?有什么我可以解决的吗?

2 个答案:

答案 0 :(得分:1)

您会收到一条错误消息,因为声明为返回值的proc旨在在某个地方使用该值,因此编译器会提醒您您忘记了调用结果。如果有时候您想要结果,而另一些时候您想要忽略它,则可以使用the discard statement或将proc声明为{.discardable.}来代替创建时间变量。

答案 1 :(得分:0)

我刚刚发现了为什么会收到该错误...这是因为该过程返回了一个值,而我并没有将该值存储在任何地方。这是工作代码:

var x: int = 3
var y: int = 4
if true:
    y = 7

else:
    x = 7

proc hello(xx: int, yy: int, ): int =
    return xx + yy

var output = hello(x, y)