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

Fun a(block: context(Example) () -> Unit) { } fun x(){

a{
val example:Example = this@a
}
}

class Example

'this' is not defined in this context

Как можно внутри лямбды достучаться до контекста?
(1.6.20)

10 ответов

14 просмотров

если не принципиально через контекст ресиверы то можно просто Example.() -> Unit и как раз this и будет контекстом внутри

попробуй this@Example

Mark-Epshtein Автор вопроса
Aλex Sokol
попробуй this@Example

Unresolved reference: @Example

Это косяк текущей реализации. Там должен работать резолв по типу, но не работает. Можно заменить лямбду на fun interface, там все работает.

Mark Epshtein
О, попробую с fun interface

Там с лямбдами вообще куча косяков

Mark-Epshtein Автор вопроса
Alexander Nozik
Там с лямбдами вообще куча косяков

FYI fun interface Block { context(Example) fun run() } fun a(block: Block) { } fun x() { a { val example: Example = this@Example //this@a; this@block; this@Block } } class Example не работает. Похоже пока поживу с костылем context(T)

Mark Epshtein
FYI fun interface Block { context(Example) ...

Я посмотрел свой код, я там наследую класс для того, чтобы видет все ресиверы https://github.com/mipt-npm/spc-site/blob/4024eed50ffe8bd8e370c55bcf6aaaba45a9fd2d/src/main/kotlin/space/kscience/snark/TextTransformation.kt#L16 Вариант, который я предлагал в кипе для эмуляции имен без добавления в язык такой: val MyContext.myContext = this Таким просты экстеншеном из любого контекста можно вытащить тип

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

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

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
Кибер Бомж
8
Карта сайта