在Fsharp中实施签名
签名:MyLibrary.fsi
namespace myLib
module public MyModule1 =
val addition : p:float -> float
实施:MyLibrary.fs
namespace myLib
module public MyModule1 =
let addition p = p*2.0
测试
#load "C:\@@@@@\Projects\MyLibrary.fsi"
#load "C:\@@@@@\Projects\MyLibrary.fs"
open myLib.MyModule1
错误:
C:\ @@@@@ \ Projects \ MyLibrary.fsi(1,1):错误FS0240:签名文件' FSI_0015_MyLibrary'没有相应的实现文件。如果存在实施文件,请检查'模块'和'命名空间'签名和实现文件中的声明匹配。
@@@@@相当于我的完整路径
答案 0 :(得分:2)
希望我明白你的意思。如果你还需要,请告诉我吗?
module public MyModule =
type IMyModule1 =
abstract member addition : double -> double
type MyModule =
interface IMyModule1 with
member this.addition p = p*2.0
答案 1 :(得分:1)
您获得的错误是因为您正在运行2个不同的加载语句。每个加载必须能够作为有效语句完成。如果你将这两个语句结合起来就可以了。你还需要逃避斜杠。我使用'@'前缀做到了这一点。这是一个例子:
#load @"C:\@@@@@\Projects\MyLibrary.fsi" @"C:\@@@@@\Projects\MyLibrary.fs"
open myLib.MyModule1