QML 文件中是否支持 Lambda?

Is there Lambda support in QML files?

我有这样的东西:

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

QtCreator 对此报错。我的 Qt 版本是 5.12,我使用的是 QtCreator 4.8。

我可以在 QML 中使用这种 lambda 表达式吗?

那只是 QtCreator 的一个错误,Qt 5.12 及更高版本支持箭头函数。 QtCreator 从 4.9 版本开始正确支持它们并停止为其显示警告 (QTCREATORBUG-21301 & QTCREATORBUG-20341. See 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