void proc和void proc之间的区别与丢弃

时间:2016-02-02 07:02:10

标签: nim

鉴于以下两个过程:

proc firstOne(): void =
    echo "X"

proc secondOne(): void =
    echo "X"
    discard

它们之间有什么功能差异?如果它们是相同的,如果void类型丢弃结果,丢弃的目的是什么?

1 个答案:

答案 0 :(得分:5)

第二个程序中的discard是多余的。没有参数的discard只是一个无操作。它通常用于(如Python中的pass)语言语法需要一个语句,但你不想做任何事情。一个例子是一个空过程:

proc doNothing() =
  discard

即使在语法上没有必要,你仍然可以添加discard,因为作为一个no-op它没有做任何事情。

这与带有参数的discard不同,其目的是为其副作用调用函数并忽略结果。