新年发布F#的两个 Bug,都集中在 module 中。
第一个是:[<CLIEvent>] 特性在 module 中不起作用,CLIEvent 的作用是使 F# 的事件编译后生成标准接口,方便C#调用。但是 CLIEvent 在 module 中不运作,要实现相同的效果,只能通过 type 声明类,然后在类中声明静态事件。
第二个是:module 中声明的私有成员,在 module 外仍然可以赋值。实例代码如下:
module K1Dialog =
let mutable private Frames = 0
module test =
let test =
K1Dialog.Frames <- 1
如果第一个 Bug 可以看作一种特性,而且容易纠正解决,那么第二个 Bug则是致命的,而且隐藏在代码中难以发现。
时间: 2024-11-17 17:17:25