Я получаю ошибку «Тип несоответствия», когда я использую функцию в качестве параметра в Kotlin?

Я надеюсь использовать функцию AA как параметр функции BB в следующем коде, но я получу две ошибки.

Ошибка 1: я надеюсь присвоить результат функции cc dd, но я потерпел неудачу.

Ошибка 2: я надеюсь вызвать функцию BB, но параметр AA (3) неверен.

Как я могу исправить ошибки? Благодаря!

class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) BB(1,AA(3)); //Error 2 } fun AA(aa:Int): Int{ return aa+10 } fun BB(bb:Int, cc:(Int) -> Int){ val dd:Int=cc(Int); //Error 1 Toast.makeText(getApplicationContext(), bb+dd, Toast.LENGTH_LONG).show(); } } 

Ваш синтаксис Kotlin неверен.

Как вы его написали, метод BB:

fun BB(bb: Int, cc: Int) {

То, что вы передаете BB, является РЕЗУЛЬТАТОМ функции AA (aka: Int ).

Другими словами, почему вы получаете функцию (AA) внутри (BB), если вы уже вызываете функцию, когда вы вызываете «BB». Поскольку AA берет Int и возвращает Int, сигнатура для функции BB ожидает всего два int. Вызов AA(Int) произошел на вашей строке ERROR 2 .

Непонятно, что вы пытаетесь сделать (учитывая код вашего Toast), но вы можете использовать ссылки TypeAlias ​​& Bound следующим образом:

 typealias SomeType = (Int) -> Int class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val a = this::AA // Save a Bound Reference to the function. BB(1, a) // Call BB and pass a value and a function } fun AA(aa: Int): Int { return aa + 10 } fun BB(bb: Int, cc: SomeType) { val dd = cc(bb) // call `cc` which is really `AA(Int) -> Int` Toast.makeText(getApplicationContext(), dd, Toast.LENGTH_LONG).show() } } 

попробуй это.

 fun AA(aa: Int): Int { return aa + 10 } fun BB(bb: Int, cc: Int) { val dd: Int = cc Toast.makeText(getApplicationContext(), bb + dd, Toast.LENGTH_LONG).show() } 
Intereting Posts