Как стать автором
Обновить

Комментарии 22

На первый взгляд Svelte по DX теперь одна из вариаций React

контракт с магазином

Каким, ёжики пушистые, магазином?

Фиксед, благодарю за внимательность

Там ещё есть ?

Тоже фиксед :)

Толи еще будет. Скоро и поддержку JSX добавят, ато шаблоны не нативно же! :)

Я использую svelte в 3х больших проектах, реактивность через `$:` часто работает не так как ожидаешь, так что это безусловно шаг вперёд. Да, как-будто бы заимствование из реакта, но свелт намного быстрее в разработке и с поддержкой typescript он стал моим любимым фреймворком. В целом я очень ожидаю это обновление.

Ничтожества. Столько лет вам понабилось на то, чтобы прийти к модели свойств JavaFX.

var width = new SimpleIntegerProperty();
var height = new SimpleIntegerProperty();

var area = Bindings.multiply(width, height);

area.addListener((observable, oldValue, newValue) -> {
    System.out.println(newValue);
});

/s

Что придёт в newValue, когда произведение width и height выйдет за пределы инта?

В newValue придёт произведение примитивов, которые обёрнуты в SimpleIntegerProperty. Как эти примитивы перемножаются, что будет при переполнении, за это отвечает Java(или, скорее, JVM).

Ок, спрошу прямее: Что придёт в newValue, когда произведение width и height выкинет ArithmeticException?

ArithmeticException при переполнении не будет, это же Java. При любом другом исключении, Binding залогирует исключение и примет значение 0. Это же значение и будет передано в слушатель третьим параметром(newValue).

С 8 версии есть нормальное сложение.

Вы считаете 0 при исключениях адекватным поведением?

С 8 версии есть нормальное сложение.
Разве? Это включается каким-то флагом или как? По умолчанию, будет переполнение.

Вы считаете 0 при исключениях адекватным поведением?
Конкретно в случае с сахаром в виде Bindings.multiply/Bindings.divide, я считаю такое поведение оправданным. Если хочется самому обработать ошибку, то пожалуйста, есть Bindings.createIntegerBinding или его более низкоуровневый аналог IntegerBinding.

var width = new SimpleIntegerProperty();
var height = new SimpleIntegerProperty();
var area = Bindings.createIntegerBinding(
        () -> {
            try{
                return width.get() / height.get();
            }
            catch (ArithmeticException e){
                return ohNoTheHeightIsZero(width.get());
            }
        },
        width, height // зависимости
);
var area = new IntegerBinding(){
    {
        bind(width, height); // зависимости
    }
    @Override
    protected int computeValue() {
        try{
            return width.get() / height.get();
        }
        catch (ArithmeticException e){
            return 42;
        }
    }
};

И на всякий случай скажу, что мой первый комментарий был сарказмом. Там даже плашечка в конце стоит. Само собой, я не считаю JavaFX верхом развития реактивного программирования.

Разве? Это включается каким-то флагом или как?

https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html#multiplyExact-int-int-

я считаю такое поведение оправданным.

В следующий раз, когда банк-клиент вместо ошибки напишет, что у вас на счету 0 рублей, включите фронталку, вместе посарказмируем.

Не очень красиво, перепрыгивать с вычисления площади, до расчёта баланса.
Само собой, при расчёте баланса нужно будет учитывать и возможность деления на ноль, и все варианты выхода за пределы диапазона int. Это не ответственность Bindings.multiply, $derived и, скорее всего, UI в целом.
Да и о каком переполнении в контексте баланса может идти речь, когда при любых важных расчётах с деньгами, необходимо использовать BigInteger/BigDecimal.

Не очень умно смотреть на палец, когда вам им указывают на проблему.

Учитывая, что реактивность через $ сломана by design, мне очень тревожно за ваши проекты.

Тот же ref и computed из vue composition api? Или есть разница?

Есть, без компилятора не работает.

Идеи восходят к фреймворку Knockout, ну а сейчас есть много где (тот же mobx, например)

Где-то я уже такое видел. Зато как красиво продали "runes" :)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории