Kotlin: получить ссылку на функцию экземпляра класса

Я пытаюсь передать функцию функции в Котлин, вот мой код.

fun validateValueWithFunc(value: String, parsefun: (CharSequence) -> Boolean, type: String){ if(parsefun(value)) print("Valid ${type}") else print("Invalid ${type}") } 

Функция, которую я передаю, относится к классу Regex "containsMatchIn"

 val f = Regex.fromLiteral("some regex").containsMatchIn 

Я знаю о ссылочном операторе :: function, но я не знаю, как его использовать в этой ситуации

В Kotlin 1.0.4 привязанные ссылочные ссылки (с выражениями с левой стороны) пока недоступны, вы можете использовать только имя класса слева от :: .

Эта функция запланирована для Kotlin 1.1 и будет иметь следующий синтаксис:

 val f = Regex.fromLiteral("some regex")::containsMatchIn 

До тех пор вы можете выразить то же самое, используя синтаксис лямбда. Чтобы сделать это, вы должны зафиксировать Regex в Regex лямбда-функции:

 val regex = Regex.fromLiteral("some regex") val f = { s: CharSequence -> regex.containsMatchIn(s) } // (CharSequence) -> Boolean 

Однострочный эквивалент с использованием with(...) { ... } :

 val f = with(Regex.fromLiteral("some regex")) { { s: CharSequence -> containsMatchIn(s) } } 

Здесь, with привязкой Regex к приемнику для внешних фигурных скобок и возвращает последнее и единственное выражение во внешних фигурных скобках, то есть лямбда-функцию, определяемую внутренними фигурными скобками. См. Также: идиоматическое использование with .