D. *_*van 10 f# functional-programming
我正在尝试将嵌套的for循环转换为更实用的样式.
我一直在搞乱流水线,序列和数组,但无济于事.
这就是我所拥有的:
let allCarrierCodes = new List<string>()
for result in getAllCarrierCodesResults do
for carrierCode in result do
allCarrierCodes.Add(carrierCode.ToString())
Run Code Online (Sandbox Code Playgroud)
getAllCarrierCodesResults 是一个类型为"obj list"的seq什么是重写嵌套循环的好功能方法?
谢谢.
Lee*_*Lee 10
你可以使用Seq.collect:
let allCodes = Seq.collect id getAllCarrierCodesResults
|> Seq.map string)
Run Code Online (Sandbox Code Playgroud)
要么
let allCodes = Seq.collect (Seq.map string) getAllCarrierCodesResults
Run Code Online (Sandbox Code Playgroud)
然后,您可以将结果seq<string>转换为您想要的具体集合.
Lee的回答比这更好,但我只想提一下,你可以完全把这些嵌套循环放在列表理解中,并且瞧:
let allCarrierCodes =
[for result in getAllCarrierCodesResults do
for carrierCode in result do
yield carrierCode.ToString()]
Run Code Online (Sandbox Code Playgroud)
看起来很有必要,但功能真的很棒.
此外,你应该使用string carrierCode而不是carrierCode.ToString().保护您免受NRE的伤害,并且看起来更具功能性以获得更多奖励:-)