如何使用F#重写此代码段?

时间:2009-12-27 15:19:46

标签: .net ruby f#

我正在学习F#,我想知道如何使用F#编写这样的代码片段:

2.times {
  puts "hello"
}

如果您可以解释如何/如果在F#中可以使用块的功能,那么这也很好。

3 个答案:

答案 0 :(得分:11)

这是一个使用lambda(基本上是红宝石块):

{1..2} |> Seq.iter (fun _ -> printfn "hello")

这里Seq.iter函数将lambda作为参数,在每次迭代中执行。

答案 1 :(得分:10)

我没有编译器方便,所以如果不编译,有人请解决这个问题。这是一种定义相应F#扩展成员的方法。

type System.Int32 with
    member this.Times(act) =
        for i in 1..this do
            act()

(2).Times (fun() -> printfn "Hello")

答案 2 :(得分:2)

时间函数可写为:

let times act n =
    for i in 1 .. n do
        act()

可以调用:

2 |> times (fun () -> printfn "Hello")