Function 为匿名函数指定名称与定义它们;通常是;
我经常在球拍文档/手册中找到如下内容:Function 为匿名函数指定名称与定义它们;通常是;,function,racket,Function,Racket,我经常在球拍文档/手册中找到如下内容: (define greet (λ (name) (format "Hello, ~a!" name))) 我不认为这比: (define (greet name) (format "Hello, ~a!" name)) 将函数分配给名称而不是(define(ident args…)exprs…)通常的方式类似于JS中的相同内容: // "usual" declaration function greet (name) { return
(define greet
(λ (name) (format "Hello, ~a!" name)))
我不认为这比:
(define (greet name)
(format "Hello, ~a!" name))
将函数分配给名称而不是(define(ident args…)exprs…
)通常的方式类似于JS中的相同内容:
// "usual" declaration
function greet (name) { return `Hello ${name}!` };
// assigning
const greet = name => `Hello, ${name}!`;
const greet = function (name) { return `Hello ${name}!` };
或者Python(不使用,因为lambda不仅仅是函数;它们不太有用):
- 在JS中,
(本地)的范围不同于const greet
(全局)的范围,因此更喜欢函数greet
const greet
- 在Python中,
s只能有一个表达式作为其返回值;您可能不会声明或分配变量,因此更喜欢正确的定义lambda
(define(ident-args…)exprs…
和(define-ident(λ(args…)exprs…
)之间的范围界定或允许的语句类型没有区别
为什么一种语言比另一种语言更常用?有什么优势吗?是可读性、个人偏好还是惯用性?没有区别 大多数人更喜欢语法
(define(greet name)…)
。如果你想强调函数是值,那么写(define greet(lambda(name)…))
是有意义的。在印第安纳大学,语法(define greet(lambda(name)…)
就是用来强调这一点的(函数是第一类值)
def greet(name): return f"Hello, {name}!" # full definition
greet = lambda name: f"Hello {name}!" # not idiomatic