如何在F#4.1中使用向量

如何在F#4.1中使用向量,f#,F#,我犯了很多错误: 严重性代码说明项目文件行抑制状态 错误FS0076#r指令只能出现在F#脚本文件(扩展名.fsx或.fsscript)中。将此代码移动到脚本文件中,或用“-r”编译器选项替换此引用。如果此指令作为用户输入执行,则可以使用“#If INTERACTIVE”/“#endif”对其进行分隔。Practive c:\users\ai for robotics\documents\visual studio 2017\Projects\Practive\Practive\Program

我犯了很多错误:

  • 严重性代码说明项目文件行抑制状态 错误FS0076#r指令只能出现在F#脚本文件(扩展名.fsx或.fsscript)中。将此代码移动到脚本文件中,或用“-r”编译器选项替换此引用。如果此指令作为用户输入执行,则可以使用“#If INTERACTIVE”/“#endif”对其进行分隔。Practive c:\users\ai for robotics\documents\visual studio 2017\Projects\Practive\Practive\Program.fs 1处于活动状态

  • 严重性代码说明项目文件行抑制状态 错误FS0039未定义值或构造函数“vector”。Practive c:\users\ai for robotics\documents\visual studio 2017\Projects\Practive\Practive\Program.fs 9处于活动状态

r命令用于.fsx文件,您位于.fs文件中。如果您要创建一个具有fsx扩展名的新文件,那么上面的操作就可以了。但是,您需要FSharp.PowerPack.dll的路径,下面的代码在我的机器上运行

#r "FSharp.PowerPack.dll"

let c = vector [ 5.0; 8.0 ];
但是由于您使用的是.fs,我认为解决您面临的问题的一个更简单的方法是删除#r行,然后转到nuget并安装包FsPowerPack.Community


那么你的代码就可以正常工作了。

好吧,我喜欢我的答案,它对像我这样的初学者来说很简单。 -它的用途是调整数组大小 -这是我的问题的一个例子:

#r """C:\Users\josep\exercism\fsharp\hello-world\packages\FSPowerPack.Core.Community.2.0.0.0\lib\Net40\FSharp.PowerPack.dll"""

let c = vector [ 5.0; 8.0 ];
let vector=ResizeArray()
vector.Add(1.0)
vector.Add(2.0)
打印fn“内容”
向量|>Seq.iter(乐趣x->printfn“%f”x)
//添加范围
vector.AddRange([3.0;4.0;5.0])
打印fn“内容”
向量|>Seq.iter(乐趣x->printfn“%f”x)
//除去
向量移除(2)
打印fn“内容”
向量|>Seq.iter(乐趣x->printfn“%f”x)
//插入
向量插入(0,42)
打印fn“内容”
向量|>Seq.iter(乐趣x->printfn“%f”x)

但是我在Webite中使用了Fsharp,这只是在使用Fsharp 4.1之后才使用,请在您的c驱动器中搜索Fsharp.PowerPack.dll,然后在您的项目中添加对它的引用。如果它没有退出,请转到nuget并获取社区版本。Fsharp Powerpack已经贬值。您可能应该使用。如果你需要更多的帮助,可以通过Slack或F#聊天。从你的回答来看,你似乎并不真的需要向量来做你想做的事情-你想解决的问题是什么?这基本上是用F#语法编写C#:你在“改变”(原地改变)你分配给名字
vector
的值。F#试图鼓励您不要这样做:赋值后的值应该是不可变的,这就是为什么添加到列表中的F#函数将返回一个新列表,而不是更改现有列表的原因。你似乎是一个初学编程的人,所以不变性如此重要的原因对你来说不会很明显。但是我鼓励你尽快去阅读这个系列。
 let vector = ResizeArray<float>()
 vector.Add(1.0)
 vector.Add(2.0)
 printfn "CONTENTS"
 vector |> Seq.iter (fun x -> printfn "%f" x)
 // add range
 vector.AddRange([3.0;4.0;5.0])
 printfn "CONTENTS"
 vector |> Seq.iter (fun x -> printfn "%f" x)
 // remove
 vector.RemoveAt(2)
 printfn "CONTENTS"
 vector |> Seq.iter (fun x -> printfn "%f" x)
 // insert
 vector.Insert(0,42.)
 printfn "CONTENTS"
 vector |> Seq.iter (fun x -> printfn "%f" x)