(#(%) "Eh") 这有效: REPL> (#-6ren">
gpt4 book ai didi

function - 匿名函数简写

转载 作者:行者123 更新时间:2023-12-01 16:13:58 25 4
gpt4 key购买 nike

关于使用缩写 #(..) 的匿名函数,我有些不明白

以下作品:

REPL>  ((fn [s] s) "Eh")
"Eh"

但这不是:

REPL>  (#(%) "Eh")

这有效:

REPL> (#(str %) "Eh")
"Eh"

我不明白的是为什么 (#(%) "Eh") 不起作用,同时我不需要使用 str> in ((fn [s] s) "Eh")

它们都是匿名函数,并且它们都采用一个参数。为什么简写符号需要函数,而其他符号不需要?

最佳答案

#(...)

的简写
(fn [arg1 arg2 ...] (...))

(其中 argN 的数量取决于主体中有多少 %N)。所以当你写:

#(%)

翻译为:

(fn [arg1] (arg1))

请注意,这与您的第一个匿名函数不同,后者类似于:

(fn [arg1] arg1)

您的版本返回 arg1 作为值,来自扩展简写的版本尝试将其作为函数调用。您会收到错误,因为字符串不是有效的函数。

由于简写在主体周围提供了一组括号,因此它只能用于执行单个函数调用或特殊形式。

关于function - 匿名函数简写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13204993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com