Этот вопрос относится к моему предыдущему вопросу: Изменение анонимной функции для вызова другой анонимной функции в Kotlin
Я написал функцию, которая будет изменять прослушиватель щелчков, как указано в ответах:
fun modifiedClick( onClick: (View) -> Unit): (View) -> Unit {
return {
//hide keyboard and invoke click only if there is a gap between frequent clicks
hideKeyBoard(it)
if (!isClickDisabled) {
onClick(it)
}
}
}
Теперь, если я назову это так, как показано ниже:
view.setOnClickListener {modifiedClick { login() }}
Это не вызовет login()
Но если я изменю преобразование SAM на обычное, как показано ниже:
view.setOnClickListener (modifiedClick { login() })
Это работает!
Кроме того, если я добавлю функцию, как показано ниже:
inline fun modifiedClick(crossline onClick: (View) -> Unit): (View) -> Unit {
return {
//hide keyboard and invoke click only if there is a gap between frequent clicks
hideKeyBoard(it)
if (!isClickDisabled) {
onClick(it)
}
}
}
и вызову, как показано ниже:
view.setOnClickListener {modifiedClick { login() }}
Он даже не вызывает modifiedClick
.
Изменение его на
view.setOnClickListener (modifiedClick { login() })
вызывает обе функции modifiedClick()
, а затем login()
.
Может кто угоднопомогите мне понять, что происходит?