Ash*_*man 2 f# functional-programming
嗨,我想知道是否有一种方法可以遍历列表中的每个项目,在Java中,我将对每个循环使用a来访问arraylist中的每个项目,但是我想采用f#的功能方法。我能想到的最好的方法是使用列表开头的第一个项目,然后将其删除,以便下一个项目成为标题(然后继续进行,直到列表中没有更多的值了)。唯一的问题是我不知道如何实现它,因为我对这种语言还很陌生。任何帮助将不胜感激。
为了方便起见,假设我有一个列表:
let mylist = ["hello";"bird";"dog";"cat";"snake"]
Run Code Online (Sandbox Code Playgroud)
如果您只是想以常规F#代码执行此操作,而不是出于教育目的,则最简单的选择是使用for。这并不是特别有用,但是由于该任务本质上是必不可少的,因此应遵循以下方法:
for item in mylist do
printfn "%s" item
Run Code Online (Sandbox Code Playgroud)
从功能上看,解决方案是使用高阶函数List.iter。这在较长的管道中很有用,但是它说明了一些功能特性,即使用功能作为参数:
mylist |> List.iter (fun item ->
printfn "%s" item)
Run Code Online (Sandbox Code Playgroud)
最后,您还可以使用列表上的递归和模式匹配来执行此操作。这实质上是List.iter幕后工作-而不是“删除”头部,而是将列表分解为头部和尾部,然后在头部中打印项目后递归处理尾部:
let rec iter items =
match items with
| [] -> ()
| head::tail ->
printfn "%s" head
iter tail
iter mylist
Run Code Online (Sandbox Code Playgroud)