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

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

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

12 ответов

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта