为了实现Handler().postDelayed()
,我需要在Runnable
的第一个参数中添加一个postDelayed()
对象:
private fun blankFields() {
blank_fields_error.visibility = View.VISIBLE
Handler().postDelayed({blank_fields_error.visibility = View.INVISIBLE}, 5000)
}
我试图了解{blank_fields_error.visibility = View.INVISIBLE}
是lambda的原因仅仅是因为它被包裹在{}
中。这是否意味着如果包装在{}
中,则任何赋值都可以是lambda吗?
答案 0 :(得分:4)
简单的{}
是
{ (parameters) /* From 0 to n */ ->
// Do with it
}
parameter
可以用关键字 it 代替,因为它只是一个参数,并且不需要显示(如果只有一个参数)。
在您的情况下,{}
没有参数。因此它将是一个无参数函数。
在Kotlin中,lambda是用作另一个函数参数的函数( 高阶函数)。
在您的情况下,lambda是表示可运行接口的函数(请注意,如果您使用的是Kotlin,则它是一个函数)。 postDelayed
取一个可运行的()->Unit
,并取一个长值。
答案 1 :(得分:3)
如果 code 用花括号括起来,则它是lambda。 Lambda是匿名函数,其参数列表在某些情况下可能会省略。无论您在这些花括号中(参数列表之后)放置的代码是函数的主体。
可以是单个语句或表达式:
{ println("Hello") }
{ a = 1 }
或任意多行代码:
{
println(1)
println(2)
println(3)
}
我建议查看official documentation about lambdas以获得更多信息。