gpt4 book ai didi

nim-lang - 来自 proc 的隐式返回值

转载 作者:行者123 更新时间:2023-12-01 23:28:10 25 4
gpt4 key购买 nike

尼姆朗 tutorial这里说 -

A procedure that does not have any return statement and does not use the special result variable returns the value of its last expression.

为什么我的 echo res 打印 0 ?我不应该期望返回最后一条语句 a mod b (= 3) 吗?

proc divmod(a, b: int; res, remainder: var int): int =
res = a div b
remainder = a mod b


var
x, y: int

let res: int = divmod(8, 5, x, y) # modifies x and y

echo res

最佳答案

在你的 divmod proc remainder = a mod b 是一个语句,而不是一个表达式,所以 divmod 返回 int 的默认值,即 0。

我不确定您为什么要通过可变参数和结果同时返回余数,但您可以这样做:

proc divmod(a, b: int; res, remainder: var int): int =
res = a div b
remainder = a mod b
remainder # or result = remainder


var
x, y: int

let res: int = divmod(8, 5, x, y) # modifies x and y

echo res

如果您真的不需要修改现有值,这就是您可以重新制作过程的方式:

proc divmod(a, b: int): (int, int) =
(a div b, a mod b)

let (x, y) = divmod(8, 5)

echo x, " ", y

关于nim-lang - 来自 proc 的隐式返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66854296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com