Articles of высшие порядковые функции

Функция Котлина: Требуемая единица измерения? Найдено Int

Неоднократно сталкивается с этой проблемой в Котлине fun test(){ compute { foo -> Log.e("kotlin issue", "solved") } // This line is //showing error } fun compute(body: (foo:String) -> Unit?){ body.invoke("problem solved") } Я получаю сообщение об ошибке в Studio. Вот скриншот.

Функции Высокого порядка Котлина в проекте Java

У меня есть функция, которая имеет тип функции как формальный параметр: fun doSomething(code: () -> Boolean) = false //package function in TestKt.class Я пробовал называть его на Java, проходя в лямбда: //Java class, in Java project class Demo { public static void main(String[] args) { TestKt.doSomething(() -> false); } } Но я получаю сообщение об […]

Kotlin: Функции более высокого порядка для подсчета количества вхождений в List?

Я пытаюсь использовать функции более высокого порядка Kotlin, чтобы подсчитать, сколько раз в списке содержится определенный элемент. Я пробовал что-то вроде val result: Int? = list.count{ list.contains("element") } но кажется, что возвращает размер списка, и я не уверен, почему.

Как сделать COUNT (*) с GROUP BY в Котлине?

Предположим, что у меня есть список объектов следующего класса. class Contact( val name: String // … ) Я хотел бы получить Map<String, Int> которая сопоставляет имя с его количеством вхождений. В SQL-базе данных я бы запросил: SELECT name, count(*) FROM Contact; Каков наилучший способ сделать это в Котлине с функциями более высокого порядка?

Можно ли выразить kotlin 'с' эквивалентом метода в Scala?

Kotlin Standard lib содержит метод 'with', который получает объект и метод этого объекта, который определяется как: public inline fun <T, R> with(receiver: T, block: T.() -> R): R = receiver.block() И может использоваться как: val str = "string" with(str) { println(size)) // will print 6; equals to "string".size println(substring(3)) // will print (ing); equals to […]

Как избежать выражения объекта для функций, возвращающих интерфейс SAM

Я новичок в kotlin, поэтому, возможно, это тривиально, но я не нашел никакой соответствующей помощи на kotlinlang.org. В попытке немного узнать о kotlin мне нравится реализовывать библиотеку PushStream . Я хотел бы определить основные типы примерно так: typealias Receiver<T> = (T) -> bool typealias PushStream<T> = (Receiver<T>) -> Unit Алиасы типа AFAIK пока не поддерживаются, […]

Документирование параметров параметра функции в Котлине

Предположим, у меня есть функция более высокого порядка, которая регистрирует какой-то прослушиватель кликов. Я могу документировать его назначение и параметр listener который передается так: /** * Adds a [listener] that's called when the item is clicked. * * @param listener The listener to add */ fun addClickListener(listener: (count: Int) -> Unit) { … } Мой […]

Отражение Котлина недоступно

Я пытался изучить функции более высокого порядка с первого примера этого видео . Вот мой код и вывод. Код fun lowercase(value: String) = value.toLowerCase() fun higherOrder(value:String, op: (String) -> String) : String { println("Executing higher order fun $op") return op(value) } fun main(args: Array<String>) { println(higherOrder("HELLO", ::lowercase)) println(higherOrder("hello", {it -> lowercase(it)})) println(higherOrder("HeLlo", { x -> […]

Использовать методы дооснащения более выразительным способом

Я хочу сделать void enqueue(Callback<T> callback); код кода вызова метода более выразительный, вот что я обычно request.enqueue(object : Callback<MyModel> { override fun onFailure(call: Call<MyModel>?, t: Throwable?) { // } override fun onResponse(call: Call<MyModel>?, response: Response<MyModel>?) { // } }) И то, что нужно и что нужно, чтобы изменить этот код, блокирует более чистый способ и […]