Ruby 将上下文分配给 lambda?

标签 ruby lambda

是否可以不为 lambda 分配上下文?

例如:

class Rule
  def get_rule
    return lambda {puts name}
  end
end

class Person
  attr_accessor :name

  def init_rule 
    @name = "ruby"
    Rule.new.get_rule.call() # should say "ruby" but say what object of class Rull, does not have variable name
    # or self.instance_eval &Rule.new.get_rule
  end
end

我的目标是 -> 没有上下文的存储过程对象,并在特定位置调用之前分配上下文。可能吗?

最佳答案

派对有点晚了,但这里有另一种方法,可以通过将上下文显式传递给规则来实现。

class Rule
  def get_rule
    return lambda{|context| puts context.name}
  end
end

class Person
  attr_accessor :name
  def init_rule
    @name = "ruby"
    Rule.new.get_rule.call(self)
  end
end

Person.new.init_rule
#=> ruby

关于Ruby 将上下文分配给 lambda?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7470508/

相关文章:

ruby - 直通方法

ruby-on-rails - Nginx,Passenger,Ruby on Rails 4.1.6 Ubuntu 14 - 403 禁止错误

ruby - Mechanize /Nokogiri 无法使用 xpath 解析 XML

ruby - 处理 Rails 3 中的精确单位

ruby - 这是在 Ruby 中取消转义 unicode 转义序列的最佳方式吗?

c++ - 使用 lambda 作为模板参数时,这个编译器错误是什么?

java - 如何通过 Stream 将 HashMap<String, Long> 更改为 LinkedHashMap<String, Long>

java - 在 Java 8 流中转换类型

C# lambda 表达式的转换

java - 来自 HashSet 的并行流不会并行运行