【发布时间】:2012-04-10 21:12:09
【问题描述】:
我对以下代码感到困惑:
Proc.new do |a|
a.something "test"
puts a.something
puts "hello"
end
它在运行时不会抛出任何错误。但是,puts 语句都没有打印任何内容。我对a.something“作业”很好奇。也许这是一个省略了括号的方法调用。 上面的代码发生了什么?
【问题讨论】:
-
该代码没有做任何事情,除了创建一个永远不会运行的闭包。
-
您实际上是在运行
Proc,还是只是在声明它? -
它是从一个方法(不是我写的)返回的。更一般的红宝石问题:上面示例中
a上的something字段如何工作?可以在 ruby 中随时在对象上声明字段吗? -
@Sunday:
a.something是一种在块的第一行使用单个参数调用而在第三行不使用参数调用的方法。 -
你只是在创建一个从未被调用甚至没有名字的 Proc。就像您尝试过的一样:String.new("hello")。该行创建了一个新字符串,但没有对其进行任何处理。你正在这样做: Proc.new({|a| ...}) 它只是漂浮在空间中。
标签: ruby variable-assignment proc