Nim - Тип функции int должен быть отброшен - PullRequest
0 голосов
/ 10 июля 2019

Я новичок в 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 ]

1 голос
/ 11 июля 2019

Вы получаете сообщение об ошибке, потому что прокси, объявленные для возврата значений, должны где-то использовать это значение, поэтому компилятор напоминает вам, что вы забыли результат вызова.Если в некоторых случаях вы хотите получить результат, а в других - игнорировать его, вместо создания временной переменной вы можете использовать оператор отбрасывания или объявить процесс как {.discardable.}.

0 голосов
/ 10 июля 2019

Я только что узнал, почему я получаю эту ошибку ... Это потому, что процедура вернула значение, и я нигде не хранил это значение. Вот рабочий код:

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)

...