数组搜索函数
数组函数 index-of 在数组中查找某个值,而 any、all 和 find-index
这些操作会用谓词表达式测试数组的各个元素。
注意:这些函数是实验性的,可能会发生变化。 它们以
-1或false的结果表示“未匹配”;一旦语言支持了可选 类型,index-of和find-index应改为返回可选索引。 跟踪 issue:slint-ui/slint#12777。
index-of
Section titled “index-of”array.index-of(value) 读取第一个等于 value 的元素的索引,
如果数组中不存在这样的元素,则返回 -1。
export component Example { in-out property<[string]> names: ["Aardvark", "Beaver"]; out property <int> beaver-index: names.index-of("Beaver"); // 1}谓词表达式的形式为 (name) => condition。
它将 name 绑定到一个值并求值 condition,后者必须是 bool。
该名称的作用域仅限于 condition 内部。
谓词被传递给数组操作 any、all 和 find-index,
这些操作会依次将每个元素作为 name 提供:
array.any((name) => condition)在condition对至少一个元素成立时读取为true。array.all((name) => condition)在condition对每个元素都成立时读取为true。array.find-index((name) => condition)读取第一个使condition成立的 元素的索引,如果没有元素匹配则返回-1。
参数名称仅在谓词表达式内部可用, 其类型从数组元素类型推断。
对于空数组,any 返回 false,all 返回 true,
find-index 返回 -1。
对于简单的值相等查找,优先使用 array.index-of(value),而不是
find-index((name) => name == value):前者不需要谓词。
当匹配条件不只是与单个值相等时,才使用 find-index。
export component Example { in-out property<[int]> list-of-int: [1, 2, 3];
out property <bool> contains-two: list-of-int.any((value) => value == 2); // true out property <bool> all-positive: list-of-int.all((value) => value > 0); // true out property <int> index-of-first-even: list-of-int.find-index((value) => mod(value, 2) == 0); // 1}谓词是 Slint 语言中唯一形式的闭包,并且只能作为
any、all 和 find-index 的参数。
谓词不能存储在属性中,不能传递给函数或回调,也不能直接调用。
谓词必须内联写在 any、all 或 find-index 的调用中;
传递存储在局部变量中的闭包会被错误拒绝。
© 2026 SixtyFPS GmbH