LLVM编译器是否对连续的Swift循环函数进行了任何优化?
e.g:
var things: [String] = ["First", "Second", "Third"]
var changedThings = things.map({$0.characters}).map({$0.count})
与
var things: [String] = ["First", "Second", "Third"]
var changedThings = things.map({$0.characters.count})
在游乐场,它似乎分别运行预期的6和3次,但我不确定游乐场的行为与完整的iOS或OSX应用程序相比是多么可靠。
原因在于有许多案例,比如处理选项,以便做一些更清洁的事情:
collection.flatMap($0.optional).map(otherThing.init)
与在flatMap函数中编写整个函数相比:
collection.flatMap { return $0.optional != nil ? otherThing(name: $0.optional!) : nil }
当然有很多关于如何包含/引用函数来使特定行更清晰的选项,但无论如何我都很好奇。