数组过滤不会改变 Crystal 中的数组

Array filtering does not change the array in Crystal

我得到了一个字符串数组,如果是真的,我想在其中做一个声明在我的数组中过滤掉这个字符串。

代码

module CrystalTest
    files = ["path/to/file1.ext", "path/to/file2.ext", "path/to/file3.ext"]

    files.reject do |file|
        reject = true
        reject
    end

    print files
end

在这种情况下,我希望结果为 Array files.size => 0,因为我对每次迭代都设置了 reject true。但我一直收到 files => true

编辑: 添加了 fule 代码片段。

Array#reject returns 一个 new,过滤数组。这意味着您要么需要像这样重新分配 files 变量:

files = files.reject do |file|

或使用 Array#reject!,它就地修改数组,如下所示:

files.reject! do |file|