【问题标题】:Idiomatic Julia and the return keyword惯用的 Julia 和 return 关键字
【发布时间】:2019-02-22 00:41:34
【问题描述】:

从 Python 来到 Julia 我正在寻找能够为惯用 Julia 设定标准的东西。在 Python 世界中有 PEP 8 -- Python 代码样式指南here。我正在寻找 Julia 世界中的等价物。

例如上面链接中关于return使用的Python语句是:

在返回语句中保持一致。函数中的所有 return 语句都应该返回一个表达式,或者它们都不应该返回。如果任何 return 语句返回一个表达式,则任何没有返回值的 return 语句都应将其显式声明为 return None,并且显式的 return 语句应出现在函数的末尾(如果可访问)。

我在 Julia 世界中找到的最接近 PEP 8 的是 Julio 1.0.0 文档 hereStyle Guide 部分。我在那里没有看到关于使用return 的讨论。

问题:还有什么可以指导我的吗?

问题:在函数末尾始终使用 return 保留字是否被认为是惯用的 Julian?

【问题讨论】:

  • 我认为还没有出现独特的风格指南。就我个人而言,我几乎总是使用显式的return 语句(我有时会在很短的方法中省略它)。我发现事情太含蓄了。我的函数实际上可能是微妙的类型不稳定。
  • 到目前为止,您最好的选择是阅读Julia base source code。有点极端,但具有讽刺意味的是,它们与 return 语句不一致:第 102 和 112 行 here
  • 是的,nothing 的两个相同返回,相隔 10 行,一个是 return nothing,另一个是 nothing。感谢您的指点。我喜欢这里的 cmets,建议大部分时间都应该使用明确的 return
  • 我遵循一个简单的规则:简短的单行函数:没有return。普通长格式函数:always return。我发现隐含的returns 令人迷惑,并且一直认为它一定是一个有一些无形副作用的声明,然后才意识到,'哦,我想这只是一个return 声明'。但不幸的是,它非常被普遍使用,即使在核心开发者中也是如此。
  • 我同意。似乎 Julia 需要 Python 中的 PEP 8 之类的东西。

标签: julia


【解决方案1】:

大多数时候,将return 设为显式是一种很好的做法。有时函数不打算返回值(如print); Julia 提供了一种方法来明确return nothing。使用本质上是详细阐述的条件 if x != 0 ... end 的简短函数,让条件的每个分支返回其值而不显式使用 return 是可行的,但不会丢失任何内容,并且通常通过显式使用 return 来获得清晰度。

【讨论】:

    猜你喜欢
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    • 2014-12-24
    • 2014-03-09
    • 2016-09-10
    • 1970-01-01
    相关资源
    最近更新 更多