为什么我看到
proc simple(a, b: int) : int =
result = a + b
在nim代码中经常出现,好像是
proc simple(a, b: int) : int =
a + b
足够吗?我所缺少的两者之间在语义上有什么区别吗?
唯一隐式返回我在nim-lang上找到的最后一条语句的引用不是在manual中,而是在tut中声明所在
[...] proc的主体可以包含一个值为 然后隐式返回。
这似乎具有误导性:它似乎适用于每个“最后一个表达式”(除非已经设置了结果,否则必须丢弃该语句的结果)
答案 0 :(得分:1)
在编码约定(https://nim-lang.org/docs/nep1.html#introduction-coding-conventions)中,他们建议仅在流程中需要时使用return
。
这本书Nim in Action说:“使用return关键字作为proc的最后一条语句并不是习惯用法”,但是对于result = a + b
与a + b
来说并不清楚。从本书的摘要中,惯例似乎是:
a + b
。result = a + b
时才使用result
,就像result.add(b)
一样。return a
可以提前退出该过程。这本书还列出了无法编译的陷阱:
proc resultVar: string =
result = "The result"
"This cause an error"
像result = a + b
或return a
这样的代码背后的原因是人们无法获得所有惯用语,特别是当他们是像我这样的初学者时。我仍然在Python代码中看到for i in range(len(variable))
,它不仅是非Python语言的代码,而且丑陋且性能不佳。
答案 1 :(得分:0)
更奇特的功能之一是隐式结果变量:Nim中具有非无效返回类型的每个过程都有一个隐式结果变量,该变量代表将要返回的值[Wikipedia]。