169 похожих чатов

А в чём баг, как компилятор должен выводить тип ресивера?

10 ответов

4 просмотра

баг есть, где не работает с простой лямбдой, но работает с переменной (иссью, что @Jellymath выше кидал)

Ну идейно звучит, что компилятору не должно быть проблемой отличить строку от числа в лямбде: class Foo { fun bar(stringMaker: () -> String) { println("Our maker created ${stringMaker()}") } } fun Foo.bar(intMaker: () -> Int) = bar { "Int: ${intMaker()}" } fun main() { val foo = Foo() val parameter = { 2 } foo.bar(parameter) //foo.bar { 2 } //doesn't work foo.bar { "abc" } }

Vladimir-Petraković Автор вопроса
Alex Levin
Ну идейно звучит, что компилятору не должно быть п...

А, ну это вы про возвращаемый тип функции

Alex Levin
Ну идейно звучит, что компилятору не должно быть п...

такое можно заставить работать с аннотацией(точное её название не помню), потому что здесь хотя бы понятно как определять, какую из ф-ий брать а с ресивером это наверно в общем нереально

Oleg Yukhnevich
такое можно заставить работать с аннотацией(точное...

Компилятор отлично с этим справляется, просто не в случае когда я передаю напрямую лямбду в функцию

Boris Vanin
Компилятор отлично с этим справляется, просто не в...

так я именно про лямбду и говорю, а не когда уже созданную просто как параметр передают если отличается ресивер - то его же никак не определить кроме как указав его через fun T.() {}

Vladimir-Petraković Автор вопроса
Boris Vanin
так я делаю as T.()->Unit и это не помогает

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

Vladimir Petraković
Сомневаюсь, что кастовать один функциональный тип ...

так а какой синтаксис, чтобы указать, какого типа функциональный тип?

Vladimir-Petraković Автор вопроса
Boris Vanin
так а какой синтаксис, чтобы указать, какого типа ...

У лямбды тип не указать, остаются только анонимные функции 🤷‍♂️

Похожие вопросы

Обсуждают сегодня

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
Я тут за тем, чтобы задать вопрос, так как не знаю ассемблер, учу с/с++. Короче, насколько дорога операция перехода в функцию при ее вызове? Дело в том, что в с++ есть макросы...
Максим Рябцев
12
hello friends. Do you know how can I learn getx? I have a software project that I should deliver it up to 5 weeks later and I need to learn firebase too. I will be thankfull
AmirHossein Razavi
15
Доброе время суток! у меня тут иноды закончились. и понял почему по сути кстит, я периодически очищаю постгрес и сентри контайнер: postgres=# DELETE FROM nodestore_node WHER...
Юсиф Насиров
9
Привет, нужен совет старших товарищей. Есть глобальная переменная var DefaultDataFolder:string; инициализируем DefaultDataFolder:='a:\_OUT\'; есть примитивная процедур...
Max Otto
14
lazarus-3.2.0/gtk, linux патч "имя проекта по умолчанию project1 -> prj" день добрый не нравится "именя проекта по умолчанию" (project1), к.раз приходится переименовывать (н...
livontiy
5
Вопрос. Теоретический. Есть список команд. Команды отправляю в обработку некой функции, по очереди. Разные команды могут давать разные результаты после обработки. В зависимос...
Serjone
7
Коллеги, а в чём сейчас хорошо писать на перле, в смысле ide? Пробовал в идее с плагином, подсветка есть, даже какие-то предупреждения есть, но рефакторинга считай нет. Перене...
Дмитрий Петров
9
Can I forward ports (including the SSH port) between two machines without SSH? I know I can forward SSH server port from machine A (which blocks all requests by firewall) to ...
required optional
5
Всем вечера. Подскажите как лучше сделать. делаю на Д10 Например будет база данных на SQLite. в ней будет много таблиц. более 50шт Типа справочник. Содержать ID Name Id p...
Андрей Т 🐎
10
Карта сайта