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

Еще кстати вопрос - у меня есть инлайн функция с

только crossinline лямбдами. При этом если я вызову такую функцию в рамках suspend функции контекст внутри инлайн функции не будет считаться suspend (то есть я не смогу вызывать suspend методы/функции несмотря на то, что нахожусь в кроссинлайн блоке в инлайн функции, вызванной в suspend). Вопрос - как сейчас решать такую проблему?

12 ответов

9 просмотров
Алексей-Овсянников Автор вопроса

К слову, в рамках stdlib это решается через пометку инлайн функции как @InlineOnly, но эта аннотация внутренняя, и использовать я её не могу

Сделать crossinline тоже suspend.

Алексей-Овсянников Автор вопроса
Ilmir
Сделать crossinline тоже suspend.

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

Алексей Овсянников
Не, тогда из обычных функций нельзя будет использо...

Почему? Внутри suspend лямбды можно вызывать обычные функции. Если лямбда вызывается внутри самой инлайн функции, а не внутри другой лямбды, то убрать crossinline. @InlineOnly на возможность вызова suspend не влияет.

Алексей-Овсянников Автор вопроса
Ilmir
Почему? Внутри suspend лямбды можно вызывать обычн...

А саспенд лямбду нельзя вызвать из не саспенд инлайн функции

Алексей-Овсянников Автор вопроса
Ilmir
Почему? Внутри suspend лямбды можно вызывать обычн...

Возможно, вопрос в контрактах, но контракты пока экспериментальны

Алексей Овсянников
А саспенд лямбду нельзя вызвать из не саспенд инла...

Саспенд лямбду нельзя из обычного кода вызвать. А внутри саспенд лямбды можно обычные функции вызвать. Без кода неясно чего вы хотите добиться. Зачем вам кроссинлайн?

Алексей-Овсянников Автор вопроса
Ilmir
Они тоже здесь не помогут.

Тогда почему let можно вызвать откуда угодно и в рамках вызова в корутине внутри let это будет видно?

Алексей Овсянников
Тогда почему let можно вызвать откуда угодно и в р...

Потому что let не принимает crossinline. Это инлайн функция, принимающая инлайн лямбду.

Ilmir
Саспенд лямбду нельзя из обычного кода вызвать. А ...

моё предположение, что не нужны нелокальные возвраты, но нужны корутины

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

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

подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
Скажите, тут нет проблемы? IMyInterface1 = interface function GetInterface2: IInterface2; ... function TMyInterface.GetInterface2: IInterface2; begin Result := TI...
Ruslan aka DUDE
18
есть тут кто-то , кто только начал изучать си? если проходите курс на степике или как-то сами изучаете, пишите, может, скооперируемся?..
Eule
25
возможно для форматирования TimeStampZ нужен другой механизм, не?
Роман Лях (rgreat)
13
Добрый день. Абракадабра в 12-й студии ввела новый тип поля БД TSQLTimeStampOffset, использую в постгресе timestampz и вот с 12-й версии начались чудеса! До этого поля times...
Delphi Photo
9
Коллеги, здравствуйте! А можно узнать ваше мнение относительно Wolfram Mathematica vs Julia? Просто у меня стоит выбор между тем, чтобы продолжить преподавать Wolfram Mathemat...
Илья Гаража
10
Обновленный chat тестили уже господа? Готовимся на заводы ? Простой проект на ларавель собирает за 1 ответ..
Jacov Borisov
14
Дык какой описанный сценарий то? Единственное, что вижу я - это то что есть какой то интерфейс1 , про который известно, что у него есть метод, который возвращает другой интерф...
Jack128
7
А если без шуток, на чем десктоп сейчас пишут кроссплатформенный (ну чтобы с минимальным допиливанием под каждую платформу) и чтобы хорошая производительность софта была. Толь...
🐈
9
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Карта сайта