是否有任何编程语言提供命名函数的 return 值的功能?
Do any programming languages provide the ability to name the return value of a function?
在编程时,我发现有必要记录一个函数 return 的值。在 Java/Scala 世界中,您经常使用函数上方的注释来执行此操作。
然而,这与函数 参数 在所有语言中获得的第一个 class 文档形成鲜明对比。例如:
def exponent(base: Int, power: Int): Int
这里我们有一个方法的签名,该方法将 base
提高到 power
和 return 次方... 可能是该计算的结果?我确定它 return 是一个 Int
, 推断 return 值确实是计算 的结果似乎很合理=17=],但在我编写和阅读的许多函数中,不可能如此容易地推断出 return 值的语义含义,您实际上需要研究文档 and/or 用的方法找出来。
这让我想知道,是否有任何语言支持有选择地为 return 值声明 语义名称 ?
def exponent(base: Int, power: Int): Int(exitCode)
啊哈!结果这个函数实际上 return 指示操作是成功还是失败!看它在方法签名中是如此清晰!当我调用此方法时,我的 IDE 也可以智能地创建一个具有相同名称的变量,a la:
// Typing in IntelliJ
exponent(5, 5)<TAB>
// Autocompletes to:
val exitCode = exponent(5, 5)
我不认为这是某种开创性的想法,但它似乎普遍有用,令我震惊的是我从未见过用任何编程语言实现这个概念.
你能说出任何一种编程语言 具有这种 return 值的语义命名吗?
例如,在 APL 中,函数的结果被声明为变量。您示例中的函数声明可以写成
exitCode ← base exponent power
在 APL 中。然而,一个没有副作用的函数应该总是以它的结果命名 returns。如果函数失败,我会使用一个成功时永远不会返回的值,例如在这种情况下为 -1。
在编程时,我发现有必要记录一个函数 return 的值。在 Java/Scala 世界中,您经常使用函数上方的注释来执行此操作。
然而,这与函数 参数 在所有语言中获得的第一个 class 文档形成鲜明对比。例如:
def exponent(base: Int, power: Int): Int
这里我们有一个方法的签名,该方法将 base
提高到 power
和 return 次方... 可能是该计算的结果?我确定它 return 是一个 Int
, 推断 return 值确实是计算 的结果似乎很合理=17=],但在我编写和阅读的许多函数中,不可能如此容易地推断出 return 值的语义含义,您实际上需要研究文档 and/or 用的方法找出来。
这让我想知道,是否有任何语言支持有选择地为 return 值声明 语义名称 ?
def exponent(base: Int, power: Int): Int(exitCode)
啊哈!结果这个函数实际上 return 指示操作是成功还是失败!看它在方法签名中是如此清晰!当我调用此方法时,我的 IDE 也可以智能地创建一个具有相同名称的变量,a la:
// Typing in IntelliJ
exponent(5, 5)<TAB>
// Autocompletes to:
val exitCode = exponent(5, 5)
我不认为这是某种开创性的想法,但它似乎普遍有用,令我震惊的是我从未见过用任何编程语言实现这个概念.
你能说出任何一种编程语言 具有这种 return 值的语义命名吗?
例如,在 APL 中,函数的结果被声明为变量。您示例中的函数声明可以写成
exitCode ← base exponent power
在 APL 中。然而,一个没有副作用的函数应该总是以它的结果命名 returns。如果函数失败,我会使用一个成功时永远不会返回的值,例如在这种情况下为 -1。