Комментарии 4
Спасибо за информацию. Надо будет ознакомиться!
Я пытался найти решения для kotlin
и как-то упустил, что может быть решение для java
. И, раз они парсят байт-код, то для kotlin
оно тоже должно работать.
Да, хитро придумано, с сериализацией объекта лямбды и де-сериализации в свой класс, чтобы в недрах покопаться. Вижу, что автор столкнулся со схожими проблемами, и тоже воевал с замыканиями.
Существенным отличием, кмк, является наличие у меня промежуточного AST, которое достаётся из лямбды. Дальше его можно использовать как для работы с БД, так и для других нужд. Jinq заточен на работу с БД, т.е. это не универсальное средство.
И, как выяснилось, специфика решения затрудняет использование в kotlin:
Что не отменяет того факта, что библиотеку я проморгал на этапе подготовки :) А автору моё уважение, видно что очень много труда вложено.
К слову о шарп:
Вот простой пример кода. Есть 2 функции, одна принимает
Func
, другая -Expression
. В обе можно передать одну и ту же лямбду.
По форме - да, по сути - нет. Вы передаете экземпляры различных типов, хоть и записанные дословно одинаково. То есть вот так вот у вас не получится:
var f = it => it * 2;
ReceiveLambda(f);
ReceiveExpression(f};
Прокачиваем kotlin: используем AST лямбд в рантайме