【问题标题】:Undefined method `filter' for array数组的未定义方法“过滤器”
【发布时间】:2019-11-27 04:38:53
【问题描述】:

所以我正在尝试用 ruby​​ 解决 repl.it 上的课程问题/作业,这是我给出的错误列表。

ruby 2.5.5p157 (2019-03-15 revision 67260) [x86_64-linux]

undefined method `filter' for [{:r=>1, :c=>0}, {:r=>0, :c=>1}]:Array
(repl):61:in `escape'
(repl):79:in `maze_escape'
(repl):82:in `<main>'

我不明白这是为什么,因为 filter 显然是为类 Array 定义的方法,作为 Ruby 核心的一部分,Here

【问题讨论】:

  • 什么代码导致了这个错误?
  • @Amadan 重新创建错误的全部信息都在那里。查看第一个显示错误信息的sn-p。
  • 是的,我也没想过要检查版本。
  • 虽然您的问题与 Ruby 版本有关,但与您使用 repl.it 的事实无关,而且我看不到有人在“ruby-2.5”上搜索,所以我建议您删除这两个标签。仅“红宝石”就足够了。 “ruby-2.5”没有害处,但“repl.it”标签可能会导致一些有 repl.it 问题的读者浪费时间阅读您的问题。显然没什么大不了的。

标签: ruby repl.it ruby-2.5


【解决方案1】:

您使用的是 ruby​​ 版本2.5.5

Array#filteradded to ruby version 2.6.0

但是,该方法只是 Array#select 的别名 - 因此,如果您现在无法升级 ruby​​ 版本,您可以使用它。

注意:您链接到的文档适用于 ruby​​ 版本 2.6.3(即撰写本文时的最新版本)。您可以查看版本 2.5.5 here 的(几乎相同的)文档。

【讨论】:

  • 谢谢。这行得通。我没有想到版本差异。
【解决方案2】:

您使用的是 ruby​​ 2.6 吗?filter 仅在 ruby​​ 2.6 中可用。

如果您使用的是 2.6 之前的版本,请使用 select 而不是 filter

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多