小编Ale*_*erg的帖子

F#属性的快捷语法?

对于普通属性getter/setter语法

let mutable myInternalValue

member this.MyProperty 
    with get() = myInternalValue
    and set(value) = myInternalValue <- value
Run Code Online (Sandbox Code Playgroud)

是否有一个快捷方式,类似于C#中的以下内容?

someType MyProperty { get; set; }
Run Code Online (Sandbox Code Playgroud)

如果有的话,我似乎无法找到它......

f#

28
推荐指数
2
解决办法
7273
查看次数

文字属性不起作用

读克里斯的回答后,公众的文字- F#和博客文章在http://blogs.msdn.com/b/chrsmith/archive/2008/10/03/f-zen-the-literal-attribute.aspx我不不明白为什么以下不起作用:

[<Literal>]
let one = 1

[<Literal>]
let two = 2

let trymatch x =
    match x with
    | one -> printfn "%A" one
    | two -> printfn "%A" two
    | _ -> printfn "none"


trymatch 3
Run Code Online (Sandbox Code Playgroud)

这保持打印"3",虽然我认为不应该.我在这里看不到什么?

f#

17
推荐指数
3
解决办法
1455
查看次数

F#可变函数参数

有没有办法在F#中使用可变函数参数,这样就可以了

let mutable i = 9

let somefun n = n <- 12; ()

somefun i

(* *not* a real-world example *)
Run Code Online (Sandbox Code Playgroud)

我知道这可以通过将其包装到记录类型中来实现

type SomeRec = { mutable i: int }

let ri = { i = 9 }

let someotherfun r = r.i <- 12; ()
Run Code Online (Sandbox Code Playgroud)

并且这可以以类似的方式为班级成员完成.然而,即使在浏览了整个F#语言规范之后(是的,我做了!),似乎没有语法允许第一种情况,并且编译器似乎对我尝试这一点非常不满意.我希望会有某种类型的注释,但是不能在这种情况下使用mutable.

我也知道我不应该首先做这种事情,但第一种情况(int绑定)和第二种情况(record类型)在语义上是相同的,任何这样的异议都会同时适用于这两种情况.

所以我认为我在这里遗漏了一些东西.

f#

10
推荐指数
2
解决办法
3670
查看次数

获取序列的每个第n个元素

我正在寻找一种方法来创建一个由另一个序列的每个第n个元素组成的序列,但似乎没有找到一种方法以优雅的方式做到这一点.我当然可以破解某些东西,但我想知道是否有一个我没有看到的库函数.

名称以-i结尾的序列函数似乎非常适合于确定元素何时是第n个或第n个(第n个的多个),但我只能看到,iteri并且mapi没有一个真正适合于任务.

例:

let someseq = [1;2;3;4;5;6]
let partial = Seq.magicfunction 3 someseq
Run Code Online (Sandbox Code Playgroud)

partial应该是[3;6].那里有什么类似的东西吗?

编辑:

如果我不是那么雄心勃勃并且允许n不变/已知,那么我刚刚发现以下内容应该有效:

let rec thirds lst =
    match lst with
    | _::_::x::t -> x::thirds t // corrected after Tomas' comment
    | _ -> []
Run Code Online (Sandbox Code Playgroud)

有没有办法写这个更短?

f#

7
推荐指数
2
解决办法
2541
查看次数

标签 统计

f# ×4