Language agnostic Return关键字:为什么有些语言有它,而有些语言没有?

Language agnostic Return关键字:为什么有些语言有它,而有些语言没有?,language-agnostic,Language Agnostic,有些语言(如Racket)不需要return语句将值返回给调用者。例如: (define (myfunc) (1)) 为什么像C#这样的其他语言有一个显式的return关键字?这个关键字真的有用吗,还是为了更清楚起见?这是函数返回最后一个计算表达式的典型函数式语言 在命令式上下文中,这是一个不切实际的限制,因为通常会提前返回,例如在查看数组是否包含某个元素时 contains(array, element) { for(el in array) { if(el == ele

有些语言(如Racket)不需要return语句将值返回给调用者。例如:

(define (myfunc)
    (1))

为什么像C#这样的其他语言有一个显式的return关键字?这个关键字真的有用吗,还是为了更清楚起见?

这是函数返回最后一个计算表达式的典型函数式语言

在命令式上下文中,这是一个不切实际的限制,因为通常会提前返回,例如在查看数组是否包含某个元素时

contains(array, element) {
  for(el in array) {
    if(el == element) return true;
  }
  return false;
}
而在函数上下文中,您可以通过递归来实现这一点

(define (contains array element)
  (cond
    ((empty? array) false)
    ((eq (head array) element) true)
    (else (contains (tail array) element))))

你的问题有点与我有关。 函数式编程语言只支持函数,因为它们促进了以“函数式方式”编写代码的范例,也就是说,不,这意味着您应该始终返回某些东西(结果)

这并不意味着不能用函数式编程语言编写非函数式代码,例如Scheme有
!设置
。这就是说,不鼓励使用它,因为它是一种非功能模式