“你是说吗?”推荐我调用的方法。 ruby 如何推荐未定义的方法?我该如何解决这个问题?

问题描述 投票:0回答:1

我预先道歉,因为这可能已经被问过。然而,在我的所有搜索中,我都被各个“未定义方法”问题所淹没,这些问题似乎根据库有不同的答案。我认为这有点笼统,需要比我更多地了解 ruby 基础知识。

我有一个定义一些 lambda 的文件,以便我可以通过调用它们的工具将它们用于多个脚本。它很早就失败了,所以我可以轻松分享相关部分。

require 'active_support/core_ext/hash/keys'
require 'json'

LD = {
  clients: -> { JSON.parse(`hyprctl clients -j`).map(&:symbolize_keys) }
}

注意:

JSON.parse()
在这种情况下确实返回一个Hash对象数组(以便列表中的每个项目可以包含相同的键,而不需要顶级键)
据我了解,ActiveSupport 修改了 ruby 中的 Hash 类,添加了
symbolize_keys
方法。 外部脚本使用
require_relative 'lambdas'
加载上面包含的摘录,抛出我见过的最奇怪的错误:

lambdas.rb:7:in `map': undefined method `symoblize_keys' for an instance of Hash (NoMethodError)

  clients:  -> { JSON.parse(`hyprctl clients -j`).map(&:symoblize_keys)                      },
                                                 ^^^^
Did you mean?  symbolize_keys
               symbolize_keys!

我读到这篇文章的方式是,当 lambda 被称为 ruby 时,它不知道

Hash.symbolize_keys
,但不知何故在“你是说吗?”之前函数运行它发现了吗?它怎么能同时是
undefined
和“你是说吗?”的选项?推荐一下?

ruby undefined
1个回答
0
投票

再看一遍...你写的是

symoblize
,而不是
symbolize

© www.soinside.com 2019 - 2024. All rights reserved.