嵌套块中的访问键参数

access key parameter in nested block

我在访问由 Proc 创建的块中的参数时遇到困难...自己看看:

#<NoMethodError: undefined method `read_transform' for #<API::Portal:0x0000556037915cc0>>
["api.rb:23:in `block (2 levels) in access'", ...]
module API
  def self.access(s, delete: false, read_transform: proc(&:itself))
    proc {
      path = "/#{s}"
      define_method(s) {
        read_transform(query(:GET, path).body) # this is line 23
      }

      define_method("#{s}=") { |v|
        query(API::_method(v, delete), path).body
      }
    }
  end
end

该块用于扩展 class,如下所示:class_eval &API::access(:name) 触发异常的调用是api.name.

s 似乎在块内工作以构建 path。为什么无法在内部块中访问 read_transform? 我做的范围错了吗?

我犯的错误是'not interpreting the error correctly': undefined method `read_transform'

read_transform 已定义 - 不是作为方法而是作为过程。

更改有问题的行
read_transform(query(:GET, path).body)

read_transform.call(query(:GET, path).body)

修复了错误并导致预期的行为。