嵌套块中的访问键参数
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)
修复了错误并导致预期的行为。
我在访问由 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)
修复了错误并导致预期的行为。