我有一个以命令式风格编写的函数女巫,无法弄清楚如何将其转换为更强大的函数式方法。
该函数接受一个字符串序列并返回一个元组序列,其中每个元组由输入中的 2,7,12,.. 和 5,10,15,.. 项组成。
例子:
输入 = { “Lorem”、“ipsum”、“dolor”、“set”、“amet”、“consectetuer”、“adipiscing”、“elit”、“Aenean”、“commodo”、“ligula”、“eget” , "dolor", "Aenean", "massa" }
输出 = { ("ipsum", "amet"), ("adipiscing", "commodo"), ("eget", "massa") }
let convert (input : seq<string>) : seq<(string * string)> =
let enum = input.GetEnumerator()
let index = ref 0
let first = ref ""
let second = ref ""
seq {
while enum.MoveNext() do
let modIndex = !index % 5
index := !index + 1
if (modIndex % 2 = 0 && !first = "") then first := enum.Current
if (modIndex % 5 = 0 && !second = "") then second := enum.Current
if modIndex = 0 then
let result = (!first, !second)
first := ""
second := ""
yield result
}
感谢您对起点的任何帮助或提示。