我预先道歉,因为这可能已经被问过。然而,在我的所有搜索中,我都被各个“未定义方法”问题所淹没,这些问题似乎根据库有不同的答案。我认为这有点笼统,需要比我更多地了解 ruby 基础知识。
我有一个定义一些 lambda 的文件,以便我可以通过调用它们的工具将它们用于多个脚本。它很早就失败了,所以我可以轻松分享相关部分。
require 'active_support/core_ext/hash/keys'
require 'json'
LD = {
clients: -> { JSON.parse(`hyprctl clients -j`).map(&:symbolize_keys) }
}
注意:
JSON.parse()
在这种情况下确实返回一个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
和“你是说吗?”的选项?推荐一下?
再看一遍...你写的是
symoblize
,而不是symbolize
。