当前位置:  开发笔记 > 编程语言 > 正文

F#:static let和static成员

如何解决《F#:staticlet和static成员》经验,为你挑选了1个好方法。

我是F#的菜鸟,目前在F#3.0上阅读专家.它是我正在学习的第一个编译语言(我只知道在R中编程)

在第6章,第117页,我们介绍了没有太多仪式静态let和静态成员.我真的不明白它是什么

type Vector2D(dx : float, dy : float) =
     static let zero = Vector2D(0.0, 0.0)
     static let onex = Vector2D(1.0, 0.0)
     static let oney = Vector2D(0.0, 1.0)
     /// Get the zero vector
     static member Zero = zero
     /// Get a constant vector along the X axis of length one
     static member OneX = onex
     /// Get a constant vector along the Y axis of length one
     static member OneY = oney 

没有任何例子可以在书中继续进行.

我在F#interactive中键入它.从那里,我如何构造一个值为零(或onex ...)的变量x?

我正在尝试以下方法.什么都行不通

let x = Zero;;
let y = Vector2D(2.0,2.0);; /// ok
y.Zero;;
stdin(237,1): error FS0809: Property 'Zero' is static

在http://fsharpforfunandprofit.com/posts/classes/中 有这个例子,

type StaticExample() = 
    member this.InstanceValue = 1
    static member StaticValue = 2  // no "this"

// test
let instance = new StaticExample()
printf "%i" instance.InstanceValue
printf "%i" StaticExample.StaticValue

所以我本来期望y.Zero;;产生一些东西?...

谢谢.抱歉,这个问题非常基础.如果有人能解释我的意思......



1> John Palmer..:

因此,基本区别在于静态成员不属于类的实例.

而不是y.Zero,你得到Vector2D.Zero.

对于第一个近似值,您可以考虑这些类型属性的示例.

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有