Pull to refresh
120
0
Сергій Олендаренко @GooRoo

User

Send message

Пользоваться им и правда не всегда удобно. Только это проблема не MPS, а устаревших прочих инструментов.

На самом деле я просто хотел убедиться, что семантика Qt/QML в вашем PureQML сохранена. Но потом увидел вот это:


// ...
setPos(long, lat): {
    // ...
}
// ...

Для Qt/QML это в принципе невалидная запись, что меня и заинтересовало.


На мой взгляд разница между одной записью и другой всё же есть. Если я правильно понял, то для вас эти две записи эквивалентны:


function foo() { }

и


foo: { }

С одной стороны вторая запись слишком похожа на binding какого-то выражения к свойству foo. Окей, допустим, вы не стали делать различия между свойствами и методами (мемберы и есть мемберы, почему бы и нет). Но в Qt/QML есть другая штука. Вот эти две записи с его точки зрения эквивалентны:


propName: jsExpression

и


propName: { return jsExpression; }

Таким образом, если мы хотим забиндить ("забайндить" не звучит, так что буду называть это забиндить) на свойство не результат выполнения блока кода, а сам этот блок кода, то в Qt/QML мы пишем как-то так:


property var foo
// ...
foo: function() {
    // ...
}

или даже


foo: {
    return function() { /* ... */ };
}

В общем, немного сложно понять, что происходит.


С другой стороны вы, возможно, не стали делать различия между методами и обработчиками сигналов. Окей, тоже почему бы и нет. Фактически, единственное, что их у вас отличает, это наличие префикса on. На мой взгляд, это различие недостаточно явное. Например, предположим, у нас есть компонент Foo, описанный в Foo.qml следующим образом:


Item {
    foo: { 
        console.log("inner"); 
    }
}

Потом мы его используем как-то так:


Item {
    Foo {
        id: _foo

        foo: {  // переопределение метода, объявленного внутри
             console.log("outer");
        }
    }

    onSomeEvent: {
        _foo.foo() // выводит только "outer"
    }
}

В случае же с сигналами всё работает немного иначе. Допустим, Bar выглядит так:


Item {
    signal bar()
    onBar: { 
        console.log("inner"); 
    }
}

Потом мы его используем как-то так:


Item {
    Bar {
        id: _bar

        onBar: {  // пишем свой обработчик сигнала
             console.log("outer");
        }
    }

    onSomeEvent: {
        _bar.bar() // выводит сначала "inner", потом "outer"
    }
}

Другими словами, если бы вы позволяли объявить таким же образом метод, начинающийся с on, то была бы вообще полная неразбериха. А так только наполовину, на мой взгляд. Странно всё это :)

Ну ок, не заменили, а добавили. Тем не менее синтаксис новый (и на мой взгляд добавляет путаницу), причём на сайте в разделе с различиями с оригинальным QML я этого не нашёл.
Я чего-то не знаю про QML или вы заменили QML-ный синтаксис объявления методов на TypeScript-овый?
Про симпатичность анимации это шутка, надеюсь.
Слава богу, автор пилит тулзы, а не игру.
Небось для пробной реализации какой-то игровой идеи пришлось бы сначала составлять дополнение к диз.доку, писать спецификацию на фичу по ГОСТам, аппрувить в трёх разных отделах с обходным листом и треугольной печатью из седьмого кабинета и т.д.
Мы бы даже в первую часть ещё не поиграли.
Ну как минимум теперь ясно, что ожидать это не стоит. Спасибо.
Ваше заявление настолько же голословное, как и моё :)
Например, потому же, почему и некоторые программисты пользуются vim. Подо что руки уже сломаны…
Из серии «коней на переправе не меняют».
Управление с клавиатуры там божественное
Раньше на хабре не было подсветки синтаксиса для кода. Выживали, как могли. Сейчас уже западло менять, учитывая, что ломал не я :)
Мне без проблем выслали новую G700s из-за проблем с тем же дабл-кликом. Даже не просили уничтожать старую.
В QML для этого есть специальный модуль: doc.qt.io/qt-5/qtquick-qtquicktest.html

А будете Вы его использовать или нет, это уже дело Ваше.

Кстати, на заметку, QT = QuickTime, Qt = Qt.
QML работает внутри обычного нативного приложения, обрабатывается специальным движком, рендерится через OpenGL, декларативность-реактивность из коробки, скриптовать можно на JS, расширять на С++.
Но мне кажется будущее всё же за github.com/nylas/N1 типа приложениями (технологии Electron, React, Flux). Кросс-платформенное, код на CoffeeScript, покрытие кода тестами.

Зачем, если есть QML?
Винда внезапно умеет делать то же с приложениями, поставленными из стора. Да и данные переносить не нужно — OneDrive из коробки.
удобный файловый менеджер, адекватный шелл

Total Commander, PowerShell + ConEmu
Спасибо ) Теперь можно и доиграть в неё.

Information

Rating
Does not participate
Location
Харьков, Харьковская обл., Украина
Date of birth
Registered
Activity