Language agnostic Return关键字:为什么有些语言有它,而有些语言没有?
有些语言(如Racket)不需要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
(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有
!设置
。这就是说,不鼓励使用它,因为它是一种非功能模式