Как сделать вызываемую ссылку на функцию верхнего уровня из другого файла? - PullRequest
0 голосов
/ 07 сентября 2018

Это действительный файл Kotlin:

fun <A> fourtyTwo(foo: A): Int = 42

val bar = listOf("candy", "chips", "drink").map(::fourtyTwo)

Однако в моем проекте fourtyTwo - это функция верхнего уровня , определенная в другом файле.

Есть ли способ сделать вызываемую ссылку на функцию верхнего уровня из другого файла?

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Как сказано в ответе yole , вы можете вызывать функции верхнего уровня из разных файлов, импортируя функцию в другой файл. В вашем случае это разрешится так:

Файл A

fun <A> fourtyTwo(foo: A): Int = 42

Файл B

import fourtyTwo
val bar = listOf("candy", "chips", "drink").map(::fourtyTwo)

В случае, когда функция верхнего уровня находится в файле, объявляющем имя пакета foo.bar, ваш файл B может выглядеть следующим образом:

import foo.bar.fourtyTwo
val bar = listOf("candy", "chips", "drink").map(::fourtyTwo)

или как это:

val bar = listOf("candy", "chips", "drink").map(::foo.bar.fourtyTwo)

Последнее может быть полезно при вызове функций с одинаковой сигнатурой, но в разных пакетах.

Надеюсь, это помогло!

0 голосов
/ 07 сентября 2018

Да, конечно. Необходимо убедиться, что функция импортирована, а затем сделать вызываемую ссылку, как всегда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...