Есть ли поддержка лямбда в файлах QML? - PullRequest
0 голосов
/ 01 января 2019

У меня что-то вроде этого:

var arr = []
arr.indexOf(element => element.includes(''))

QtCreator выдает ошибку для этого.Моя версия Qt 5.12, и я использую QtCreator 4.8.

Могу ли я использовать лямбда-выражения такого типа в QML?

1 Ответ

0 голосов
/ 02 января 2019

Это была просто ошибка QtCreator, функции стрелок поддерживаются в Qt 5.12 и позже.QtCreator должным образом поддерживает их, начиная с версии 4.9 и прекращая выводить предупреждения об этом ( QTCREATORBUG-21301 & QTCREATORBUG-20341 . См. 4.9 changelog ).

Однако в вашем случае, как сказал folibis, вам нужно findIndex, если вы хотите предоставить предикат.Он работает в 5.12, страница поддерживаемых функций не очень надежна.

Qt 5.12 должен поддерживать большинство стандартных функций ECMAScript, посмотрите MDN для справки и попробуйте его в Qtкод.

{
    let arr = ['a', 'ab', 'abc', 'abcd'];
    let index = arr.findIndex(element => element.includes('c'));
    let abcIsPresent = arr.includes('abc');
    print(index, abcIsPresent);
}

Этот код работает в Qt 5.12 и выдает 2 true.

...