【问题标题】:Array filtering does not change the array in Crystal数组过滤不会改变 Crystal 中的数组
【发布时间】:2019-05-09 06:53:05
【问题描述】:

我有一个字符串数组,如果某些事情是真的,我想在其中发表声明,过滤掉我数组中的这个字符串。

代码

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

在这种情况下,我希望结果是数组files.size => 0,因为我将每次迭代都设置为拒绝真。但我不断收到files => true

编辑:添加完整代码sn-p。

【问题讨论】:

  • 但是?请提供一个更完整的例子。根据您显示的内容推断,它可以工作:carc.in/#/r/6vne
  • 这是完整的代码,它没有更多的魔力,当我在这段代码之后运行打印文件时,它返回 true 而不是空数组? files 只是一个像这样的字符串数组: ["path/to/file.ext", "path/to/file.ext", "path/to/file.ext"]
  • @JonneHaß 我现在已经添加了完整的文件。

标签: arrays filtering crystal-lang


【解决方案1】:

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

files = files.reject do |file|

或者使用Array#reject!,就地修改数组,像这样:

files.reject! do |file|

【讨论】:

  • 谢谢,我想我错过了!在我的代码中,我只是一个非常新手的 ruby​​ 开发人员,只为有趣的项目做了很少的工作。来自 Javascript,所以我试着学习语法和模式谢谢你的回答!
猜你喜欢
  • 1970-01-01
  • 2016-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-19
相关资源
最近更新 更多