相关疑难解决方法(0)

是否可以在方法中访问块的范围?

我想编写方法(define_variables),它可以获得block并使用其中定义的变量.可能吗?例如,我想输出5:

module A
  def self.define_variables
    yield
    puts a # not 5 :(
  end
end

A::define_variables do
  a = 5
end
Run Code Online (Sandbox Code Playgroud)

也许有一些eval的技巧,但还没有找到任何人.

ruby

2
推荐指数
1
解决办法
216
查看次数

块像Ruby DSL的参数

我有一个目前看起来像这样的ruby代码:

grades.sum{|g| g.grade * g.weight}
Run Code Online (Sandbox Code Playgroud)

对于用户维护的DSL,我想实现这样的事情:

grades.sum('grade' * 'weight')
Run Code Online (Sandbox Code Playgroud)

这可能吗?

ruby dsl

1
推荐指数
1
解决办法
127
查看次数

标签 统计

ruby ×2

dsl ×1