`
echohfut
  • 浏览: 233134 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

closures, inner class and 函数指针

阅读更多

一直不是很理解这三个感念之间的区别。Java是面向对象的编程语言,这点与现在流行的面向函数的动态编程语言不同。Javascript就是后者的一个例子。函数可以独立于对象存在,(或者说它本身就是一种对象)。

 

Java里没有函数指针,但可以向函数中传入一个匿名内部类模拟这种行为。

 

Java目前还未引入closures, 但基于JVM的Groovy已经有Closures概念。在Groovy中,所谓Closures就是一段大括号括起来的代码段。这段代码按照Java的习惯一般只能存在于函数中(初始化代码除外)并以函数名的方式调用。在Groovy中,这段代码可以赋给一个变量,通过这个变量来调用这段代码(很多时候放在大括号中直接匿名使用)。

 

那么代码段与Closures的区别是什么呢?代码段一般是虚拟机碰到这段代码时就执行(方法调用,初始化,回调方法)。Closures只有在它的call()方法被调用时才执行。理解的不是很清楚,详细请参考:http://groovy.codehaus.org/Closures+-+Informal+Guide

 

闭包有几个特点:

1. 可以访问闭包范围外的变量(这点是不是跟Java中内部类相似?)

2. 可以匿名用在任何允许用闭包的地方,比如Groovy的list的collect, each 调用中

 

 

 

未完。

0
0
分享到:
评论

相关推荐

    Java Closures and Lambda(Apress,2015)

    Java Closures and Lambda introduces you to significant new changes to the Java language coming out of what is termed Project Lambda. These new changes make their debut in Java 8, and their highlight ...

    Apress - Java Closures and Lambda.2015

    ### Apress - Java Closures and Lambda (2015):关键知识点解析 #### 引言 本书《Apress - Java Closures and Lambda》聚焦于Java 8中的新特性——闭包(Closures)和Lambda表达式。这些新功能不仅为Java语言带来...

    JavaScript函数式编程.pdf

    3. 闭包(Closures) 在JavaScript函数式编程中,闭包是一个非常重要的概念。闭包是指有权访问另一个函数作用域中变量的函数。由于JavaScript的作用域链,闭包能够访问到函数定义时的外部变量,即使外部函数已经...

    Swift教程:函数篇 嵌套函数

    8. **Closures and Capture Lists**:如果嵌套函数捕获了外部函数的常量或变量,它们会在闭包环境中保持对这些值的引用,即使外部函数已经完成执行。 在“Swift教程:函数篇 嵌套函数”视频教程中,你将深入学习...

    Lua返回一个Closures函数实例

    在Lua中,闭包(Closures)是一种特殊的函数,它可以访问定义它的外部函数的局部变量。在给定的文件信息中,详细介绍了如何在Lua中返回一个闭包函数实例,并提供了相关的代码示例。 Lua中的闭包函数实例通常是指一...

    函数式Swift.epub

    除此之外,书中还可能涵盖了其他函数式编程概念,如柯里化(Currying)、高阶函数(Higher-Order Functions)、尾递归(Tail Recursion)优化、闭包(Closures)的使用,以及如何通过函数式编程风格来实现常见的设计...

    Structural Closures (ch600-1) (2005)

    ### 结构封闭(Structural Closures) #### 引言与背景 《结构封闭》(Structural Closures ch600-1 2005)是美国海军技术手册中的一个章节,更新自2002年12月31日的版本。此章节主要涵盖了船舶上非弹道性水密和气密门...

    closures&callbacks.md

    A quick summary of closures and callbacks on web development.

    函数式 Swift

    2. **闭包(Closures)**:Swift的闭包是一种可以捕获和存储其所在上下文中的常量和变量的匿名函数。它们可以被用作参数,也可以作为返回值。闭包表达式的简洁语法使得在Swift中使用闭包非常方便。 3. **柯里化...

    函数一1.zip

    此外,Python还提供了装饰器(decorators)和闭包(closures)等高级函数特性,它们允许我们在不修改原始函数代码的情况下,增强或扩展函数的功能。 装饰器是一种特殊类型的函数,它可以“装饰”其他函数,即在不...

    secrets_of_javascript_closures.pdf

    secrets_of_javascript_closures.pdf

    函数式 swift

    **函数式Swift** Swift语言,由Apple开发,不仅在面向对象编程方面表现出色,还具有强大的函数式编程特性。函数式编程是一种编程范式,它强调通过数学函数处理数据,避免可变状态和副作用,从而提高代码的可读性...

    Mastering Ruby Closures

    The road to Ruby mastery is paved with blocks, procs, and lambdas. To be a truly effective Ruby programmer, it’s not enough just to understand these features—you need to know how to use them in ...

    ActionScript 3.0之函数

    - **函数闭包(Function Closures)**:除了作为方法之外定义的所有函数都可以称为函数闭包。 #### 二、函数的优势 使用函数进行编程带来了诸多优势,具体如下: 1. **提高代码的可读性**:通过减少混乱和冗余的...

    33编程范式游记(4) - 函数式编程1

    4. **闭包(closures)**:捕获其定义时环境的函数,允许函数访问和操作局部作用域的变量,即使在函数调用后仍然有效。 【总结】 函数式编程是一种强调函数的数学特性的编程范式,它鼓励使用纯函数、无副作用和不可...

    Swift心得笔记之函数

    此外,Swift还支持闭包(Closures),这是一种更高级的函数形式,可以捕获和存储上下文中的常量和变量。闭包可以在函数中作为参数传递,或者返回作为结果。闭包在Swift中的应用非常广泛,例如在排序、过滤和映射集合...

    PHP之基础语法函数

    匿名函数(Anonymous functions),也叫闭包函数(closures),允许临时创建一个没有指定名称的函数。它们最经常用作回调函数(callback)参数的值。 ### 可变函数 PHP 支持可变函数的概念。这意味着如果一个变量...

Global site tag (gtag.js) - Google Analytics