美文网首页
关于lamada表达式变量作用域的几点说明

关于lamada表达式变量作用域的几点说明

作者: 江南Ryan | 来源:发表于2018-11-15 15:42 被阅读0次
/*
* Lamada表达式的变量作用域
 */
public class Test06 {

    public static void main(String[] args) {

        /**
         * lamada表达式有三个部分:
         * 1)一个代码块
         * 2)参数
         * 3)自由变量的值,这是指非参数而且不在代码中定义的变量
         */

        countDown(10, 10);
    }

    //1,在lamada表达式中,只能引用值不会改变的变量,如下面的一个就是不合法的:
    private static void countDown(int start, int delay) {
        ActionListener listener = event ->
        {
            start--;//Error: Can't mutate captured varible;
            System.out.println(start);
        };
        new Timer(delay, listener).start();

    }

    //2,在lamada表达式中引用变量,而这个变量可能在外部改变,这也是不合法的。
    private static void repeat(String text, int count) {
        for (int i = 0; i < count; i++) {
            ActionListener listener = event ->
            {
                System.out.println(i + ": " + text);//Error: Cannot refer to changing i
            };
            new Timer(1000, listener).start();
        }

    }

    //3,在lamada表达式中声明与一个局部变量同名的参数或局部变量是不合法的
    Path firth = Paths.get("/usr/bin");
    Comparator<String> comp =
            (first, second) -> first.length() - second.length();//Error:Varible first already defined


}

相关文章

  • 关于lamada表达式变量作用域的几点说明

  • var, let, const

    let 块级作用域 let 语句声明一个块级作用域的变量。关于块级作用域,可以简单地理解为表达式中 {} 内的部分...

  • 闭包(closure)

    在讲闭包之前先说明一下变量的作用域 1.变量的作用域 变量的作用域无非就是两种:全局变量和局部变量。 函数内部可以...

  • JavaScript高级程序设计笔记7

    函数表达式 递归 闭包 (1)闭包与变量 (2)关于this对象 (3)内存泄漏 模仿块级作用域 私有变量 (1)...

  • 「JS」变量作用域

    作用域介绍静态作用域动态作用域 JavaScript 变量作用域词法环境组成创建结构关于词法环境的问题with 语...

  • 一道面试题引发的讨论

    本文的示例代码参考scope 目录 面试题 作用域变量提升 块作用域重新绑定 函数作用域立即执行函数表达式 挑战题...

  • 第四章 作用域和内存问题

    变量的作用域? 变量作用:起作用域:区域,范围变量起作用的地方 变量的生命周期,变量生于这个作用域,死于这个作用域...

  • go 变量作用域

    说明1、函数内部声明/定义的变量叫局部变量,作用域仅限于函数内部 2、函数外部声明/定义的变量叫全局变量,作用域在...

  • 通过例子理解JS闭包

    理解闭包的前提是对JS变量作用域的熟悉,变量作用域包括全局变量和局部变量。 简要说明:函数内部能够访问全局变量,函...

  • JS作用域链

    作用域 变量的作用域 变量的作用域有两种:全局变量和局部变量。 全局作用域: 最外层函数定义的变量拥有全局作用域,...

网友评论

      本文标题:关于lamada表达式变量作用域的几点说明

      本文链接:https://www.haomeiwen.com/subject/ncmyfqtx.html