匿名函数(英語:Anonymous Function)在计算机编程中是指一类无需定义标识符(函数名)的函数或子程序,普遍存在于多种编程语言中。 1958年LISP首先采用匿名函数,自此之后,越来越多编程语言陆续采用,主流的编程语言如PHP和C++也陸續采用。 尝试将类按名称排序: a = [10,...
21 KB (2,634 words) - 06:21, 26 March 2025
头等函数(first-class function;第一級函數)是指在程序设计语言中,函数被当作头等公民。这意味着,函数可以作为别的函数的参数、函数的返回值,赋值给变量或存储在数据结构中。 有人主张应包括支持匿名函数(函数字面量,function literals)。在这样的语言中,函数...
21 KB (2,021 words) - 13:22, 10 February 2024
闭包 (计算机科学) (section 闭包和头类函数)
函数式编程语言如ML语言和LISP。很多命令式程序语言也开始支持闭包。 在支持头等函数的语言中,如果函数f内定义了函数g,那么如果g存在自由变量,且这些自由变量没有在编译过程中被优化掉,那么将产生闭包。 闭包和匿名函数经常被用作同义词。但严格来说,匿名函数就是字面意义上没有被赋予名称的函数...
16 KB (2,371 words) - 02:31, 11 February 2024
Λ演算 (redirect from Lambda递归函数)
在λ演算中,每个表达式都代表一个函数,这个函数有一个参数,并且會返回一个值。不论是参数和返回值,也都是一个单参的函数。可以这么说,λ演算中只有一种“类型”,那就是这种单参函数。函数是通过λ表达式匿名地定义的,这个表达式说明了此函数将对其参数进行什么操作。 例如,“加2”函数f(x)= x + 2可以用lambda演算表示为λx...
39 KB (6,709 words) - 05:54, 26 January 2024
函数名占用全域变量名的情况。与此同时它能在禁止访问函数内声明变量的情况下允许外部对函数的调用。有时,这种编程方法也被叫做“自执行(匿名)函数”,但“立即调用函数表达式”是语义上最准确的术语。 立即调用函数表达式拥有数种不同的写法。最常见的一种是将函数...
10 KB (1,023 words) - 23:03, 5 November 2022
end create_a_counter()會返回一個匿名函数,這個匿名函數會把count加1後再回傳。在匿名函數中的變數count的值會一直被保存在匿名函數中。因此调用create_a_counter()时产生一个记数器函数,每次调用记数器函数,都会得到一个比上次大1的值。...
49 KB (5,527 words) - 22:33, 13 May 2025
通常,jQuery是通过将初始化代码和事件处理函数放入$(handler)中来使用的。当浏览器构建DOM并发送加载事件时触发。 $(function() { // 这个匿名函数是页面加载完成时要调用的函数。 // jQuery代码,事件处理回调写在这里。 }); 或者 $(fn); // 在其他地方定义的名为fn的函数,是页面加载完成时要调用的函数。...
24 KB (2,128 words) - 13:35, 17 August 2024
JavaScript (category 函数式编程语言)
在JavaScript中,函数是一等的,函数也被认为是对象。因此,函数可以有属性和方法,例如call()和bind等。嵌套函数指定义于其它函数内部的函数,在外部函数被调用时,嵌套函数会被创建。另外,嵌套函数是一个闭包,在外部函数的作用域(包括常量,局部变量和参数)都成为内部函数状态的一部分,甚至在外部函数执行完毕后,内部函数...
46 KB (4,214 words) - 04:59, 6 May 2025
Kotlin (section 主构造函数 vs. 二級构造函数)
and baz() are non-null foo()?.bar()?.baz() Kotlin 亦支持高阶函数和lambdas功能。lambda是一种匿名函数,允许开发者直接将表达式定义为函数,这类似于Python。 // the following function takes a lambda...
19 KB (2,123 words) - 22:20, 22 September 2024
Visual Basic .NET (section 匿名函数或lambda表达式)
age=22} 即无名的函数或过程,作为表达式的值。可以写为一行或多行。例如: Dim func1=Function(i As integer) i+10 Dim action = sub() End Sub Dim func2 = Function() End Function 可以在声明匿名函数...
30 KB (4,250 words) - 00:43, 24 January 2023
函数的一个不动点的高阶函数。 函数 f 的不动點是將函數應用在輸入值 x 時,會傳回與輸入值相同的值,使得 f(x) = x。例如,0 和 1 是函数 f(x) = x2 的不动点,因为 02 = 0 而 12 = 1。鉴于一阶函数(在简单值比如整数上的函数)的不动点是个一阶值,高阶函数 f 的不动点是另一个函数...
7 KB (1,192 words) - 07:22, 24 February 2022
不同語言中對函數的區別很大,例如C語言與C++中的函數不是頭等物件,因為在這些語言中函數不能在執行期創造,而必須在設計時全部寫好。相比之下,Scheme中的函數是頭等物件,因為可以用lambda表达式來創造匿名函數並作為頭等物件來操作。 Scott, Michael...
8 KB (760 words) - 11:15, 24 February 2024
的作用域中列出管理者的雇员名字和他的下属数目;随后通过for-each高阶函数,将他所有下属的SSN逐个绑定到匿名函数lambda的形式参数empno上,执行此匿名函数列出这个下属的名字和角色;这个形式参数的作用域是此匿名函数的主体,它与其外层的局部变量,标识符重名但不相互影响。在实践中,出于清晰性...
21 KB (2,868 words) - 01:21, 12 May 2025
有类型lambda演算是使用lambda符号( λ {\displaystyle \lambda } )指示匿名函数抽象的一种有类型的形式化。有类型lambda演算是基础编程语言并且是有类型的函数式编程语言如ML和Haskell和更间接的指令式编程语言的基础。它们通过Curry-Howard同构密切关...
4 KB (632 words) - 09:12, 13 October 2018
函数对象(function object)是一个程序设计的对象允许被当作普通函数来调用。 函数对象与函数指针相比,有两个优点:第一是编译器可以内联执行函数对象的调用;第二是函数对象内部可以保持状态。 函数式程序设计语言还支持闭包,例如,first-class函数支持在其创建时用到的函数外定义的变量的值保持下来,成为一个函数闭包。...
9 KB (1,237 words) - 03:56, 20 January 2025
(fib(n - 1) + fib(n - 2)) : 1; void main() { print('fib(20) = ${fib(20)}'); } 匿名函数范例: void main() => print(fib(3)); Function fib = (int n) => (n > 2) ? (fib(n...
7 KB (552 words) - 06:00, 30 April 2025
y。意思是当c为真时,表达式的值为x,否则表达式的值为y。 在运算元的次序上不同于很多其他语言中常见的c ? x : y。 Python的匿名函数实现为lambda表达式。匿名函数体只能是一个表达式。 自从Python 3.8,介入了赋值表达式,其记号是:=。它将一个表达式赋值给一个标识符,同时还返回这个表...
220 KB (23,172 words) - 06:14, 30 April 2025
68,Perl,新版本的.NET语言以及多数函数式编程语言中,允许使用匿名的代码块(lambda表达式),用以代替在别处定义的独立的回调函数。 在Apple或是LLVM的C语言扩展中,包含称为块的语言特性,可以作为函数的参数传递,作为回调的一种实现。 在缺少函数类型的参数的面向对象的程序语言中,例如Java,回调可...
7 KB (846 words) - 07:08, 26 September 2024
Scala (category 函数式编程语言)
Scala也是一种函数式语言,其函数也能当成值来使用。Scala提供了轻量级的语法用以定义匿名函数,支持高阶函数,允许嵌套多层函数,并支持柯里化。Scala的case class及其内置的模式匹配相当于函数式编程语言中常用的代数类型(英语:Algebraic type)。...
16 KB (1,593 words) - 04:58, 11 December 2023
kefile等同)。此软件由吉姆·韦里奇(英语:Jim Weirich)编写。 Rake使用Ruby的匿名函数块来定义多个任务并允许用户使用Ruby语法。它拥有共同任务库,例如:控制文件任务的函数及移除已编译文件(即“clean”任务)的库。与Make相似的是,Rake同样可以根据模式来合成任务,...
5 KB (644 words) - 17:52, 8 February 2021
eallocate),與容器綁定的迭代器仍然可以定位到重新分配後的正確的內存地址。 内部的迭代器是高阶函数(通常接受匿名函数),比如map、 reduce等,它实现跨经一个容器的遍历,依次将给定函数应用到每个元素。 外部的迭代器可以被认为是某种类型的指针,它有两个主要操作:引用在一个对象搜集(英语:Collection...
20 KB (2,124 words) - 16:59, 15 January 2025
匿名性的过程称为k-匿名化(英語:k-anonymization)。 2018年,英国计算机科学家朱纳德·阿里(英语:Junade Ali)使用k-匿名性及加密散列函数创建了一个通讯协议,可以供人匿名地验证密码是否已经泄露、但又不公开所涉及的密码;k-匿名...
22 KB (2,417 words) - 17:27, 26 October 2024
x,这里的变量x有类型T。λx -> ...是匿名函数,它的形式参数x的类型是推论而来,而∘是函数复合算子。 另一个改进是,函数通过Maybe类型,能管理简单的检查异常:一旦某个步骤失败,就短路并返回Nothing;如果计算成功则,返回正确的值而无需再评论。 加法函数...
42 KB (5,245 words) - 21:58, 31 December 2024
Common Lisp (section 函数)
x x)) 匿名函数用lambda表达式定义。Lisp编程频繁使用高阶函数,以匿名函数作为其参数的作法十分有效。 还有一些有关于函数定义和函数操作的运算符。如,操作符compile可以用来重新编译函数。(一些Lisp系统默认下在解释器里运行函数,除非指示编译它;其他Lisp系统在函数输入时即被编译。)...
68 KB (10,388 words) - 05:32, 6 February 2025
NewLISP (category 函数式编程语言)
特征的脚本语言版本的Lisp语言,然而只使用最现代的系统资源比如数据存储(例如磁盘空间)和内存。 它提供的Lisp特征包括:列表、符号处理、函数映射、匿名函数(lambda表达式)、S-表达式(排除不适当列表)和宏。它还提供现代脚本语言预期的功能包括:支持正则表达式、XML、Unicode(UTF...
7 KB (787 words) - 14:26, 25 December 2022
OCaml (category 函数式编程语言)
另一种方式是对列表使用标准的fold高阶函数: let sum integers = List.fold_left (fun accumulator x -> accumulator + x) 0 integers;; # sum [1;2;3;4;5];; - : int = 15 因为匿名函数是简单的+算符应用,它可以简写为:...
36 KB (4,228 words) - 23:50, 30 January 2025
Elm语言 (category 函数式编程语言)
Elm有一个小集合的语言构造,包括传统的if表达式,let表达式用于局部状态,和case表达式用于模式匹配。作为函数式语言,它缺省的支持匿名函数,函数作为实际参数,和部份应用。它的语义包括不可变的值,无状态函数,和具有类型推论的静态类型。Elm程序通过虚拟的DOM呈现HTML,还可以使用“JavaScript作为服务”来与其他代码进行互操作。...
20 KB (2,251 words) - 19:56, 7 May 2023
Haskell (category 函数式编程语言)
Haskell(发音为/ˈhæskəl/)是一种标准化的,通用的纯函數式編程語言,有惰性求值和强静态类型。它的命名源自美国逻辑学家哈斯凱爾·加里,他在数理逻辑方面上的工作使得函数式编程语言有了广泛的基础。在Haskell中,“函数是頭等物件”。作为一门函數程式語言,主要控制结构是函数...
39 KB (4,247 words) - 23:33, 17 August 2024
器就不会载入新页面而是直接在当前页面内容上运行Javascript脚本。可以用这个方法在不刷新页面的情形下修改页面内容,比如字体/颜色等。 以下的匿名函数可以用来强制脚本返回undenfined类型: javascript:(function(){ /* Statements returning a...
7 KB (767 words) - 14:17, 29 September 2024
@SafeVarargs - Java 7 开始支持,忽略任何使用参数为泛型变量的方法或构造函数调用产生的警告。 @FunctionalInterface - Java 8 开始支持,标识一个匿名函数或函数式接口。 @Repeatable - Java 8 开始支持,标识某注解可以在同一个声明上使用多次。...
7 KB (791 words) - 03:15, 24 November 2023
合类型,变量与引用参数的引用模型,可变长数组和字符串、数组与矩阵的分片(英语:array slicing),用户定义的运算符和运算符重载,高阶函数与匿名函数,以及并发。 IFIP工作组2.1(英语:IFIP Working Group 2.1)在1964年3月达成一致,要制定ALGOL 60的两个后续语言标准:ALGOL...
81 KB (8,262 words) - 02:14, 17 May 2025