我在遗留应用程序中有一些旧代码,它以我不理解的方式使用val t: Type = ...
val clazz = scala.reflect.runtime.currentMirror.runtimeClass(t)
ManifestFactory.classType(clazz) match {
case m: Manifest[a] =>
val c = new MyClass(m, m)
}
。我可以用一些帮助解释一下。我已经在Ruby yield
上阅读了大部分SO结果,但在此上下文中并未理解它。感谢。
yield
答案 0 :(得分:2)
find_all_from_source
显然是用一个块来调用的,该块以某种方式处理find
返回的记录。 yield
调用阻止每条记录。
这种方法可以用这种单一的方式编写,以避免Ruby难以理解的隐式块语法:
def find_all_from_source(source_id, some_more_arguments, &block)
joins, conditions = invoke_records_from_source(source_id, some_more_arguments)
find(:all, :select => “#{self.table_name}”, :joins => joins, :conditions => conditions).each do |record|
block.call record
end
end