Android 关于lambda 的下划线

lambda 运行的小知识点

languageLv!!.setOnItemClickListener { _, _, i, _ ->
    this.position = i
    adapter.notifyDataSetChanged()
}

lambda 我经常在用,也用得很顺手,只不过都是用as提示写出来的

但是我今天第一次见到还可以这样用的

原型是这样子的

languageLv!!.setOnItemClickListener { parent, view, position, id ->
    this.position = position
    adapter.notifyDataSetChanged()
}

差别就在里面的参数,

上面不需要的参数都是 下划线( _ )

下面的都是默认参数

当时是在使用的时候成员变量名一样,为了避免冲突,然后改成i,同事看到,直接让我把其他变量改成下划线 (_ ),突然觉得好神器

看了一下解释:

因为解构声明语法为lambda表达式传递参数

如果不想声明其他变量,就可以用下划线( _ )替代变量

protected Dialog onCreateDialog(int id) { 
        // TODO Auto-generated method stub 
        switch(id){ 
        case 10: 
            return new AlertDialog.Builder(Activity13.this) 
            .setTitle(getString(R.string.title)).setMessage( 
                    getString(R.string.timeout)).setPositiveButton( 
                    getString(R.string.ok), 
                    new DialogInterface.OnClickListener() { 
                        public void onClick(DialogInterface dialog, 
                                int which) { 
                        } 
                    }).create(); 
       
        } 
        return super.onCreateDialog(id); 
    } 

猜你喜欢

转载自blog.csdn.net/az44yao/article/details/112920786