我正在用Fantom 语言编写一个 Web 应用程序,并使用afMongo访问一个 Mongo 数据库实例。按照 afMongo 文档中的示例,我得到了需要迭代的查询结果。在一个简化的例子中,迭代看起来像这样
class MapListIterator {
Void main(){
[Str:Obj?][] listOfMaps := [,]
listOfMaps.add(
["12345":[
"id":12345,
"code":"AU",
"name":"Australia"
]])
listOfMaps.each |Str:Obj? map| {
echo(map.keys)
keys := map.keys
keys.each {
echo(it)
echo(((Str:Obj?)map[it])["code"])
echo(((Str:Obj?)map[it])["name"])
}
}
}
}
我在Fantom 在线操场上运行了这段代码,它工作正常,但我想知道它是否是一种更清洁的方法来遍历结果。我不喜欢上面代码中的强制转换。另外,请问有没有更好的方法来编写嵌套的 it 块?
编辑:
原来我把事情复杂化了。这是应用史蒂夫的建议后代码的样子:
Str:Country mapOfCountries := [:]
mapOfCountries.ordered = true
listOfMaps := ([Str:Str?][]) collection.findAll
listOfMaps.each {
c := it["code"]
n := it["name"]
mapOfCountries.add(c, Country { code = c ; name = n })
}