1

从 F# 4.5 开始,比赛!关键字允许您内联对另一个计算表达式的调用并对其结果进行模式匹配

据我所知,我使用的是 F# 4.5。

项目设置的屏幕截图

但是VS2017不喜欢下面的代码

let someAsyncIntOption = async{
    return Some 1
}

let someAsyncString = async{
    match! someAsyncIntOption with
    |Some 1 -> return "Some one"
    |_ -> return "None"
}

匹配!未被识别为有效语法。

我需要做什么才能完成这项工作?

4

2 回答 2

2

F# 4.5 在 VS 2017 v15.8 preview 5 中发布。仅针对 F# 4.5 运行时是不够的;您还必须拥有 F# 4.5编译器才能接受该语法。并且 F# 4.5 编译器自带 VS 15.8 preview 5;如果您运行的是早于 15.8 预览版 5 的 Visual Studio 版本,那么您有一个不知道match!语法的旧 F# 编译器。

于 2018-08-09T05:39:27.770 回答
1

根据...

https://blogs.msdn.microsoft.com/dotnet/2018/07/26/announcing-f-4-5-preview/

如果你还没有...

首先,安装:

  • .NET SDK 2.1.400 的预览,以确保您拥有 .NET Core 中的 F# 的最新位
  • 如果您使用的是 Windows,则 Visual Studio 2017 更新 15.8 Preview 5

如果您在 Visual Studio(从 F# 桌面开发组件)中创建 .NET 桌面 F# 项目,则需要使用 NuGet UI 将您的 FSharp.Core 包更新到 4.5.2。

安装必要的位后,您可以开始使用 Visual Studio、Visual Studio for Mac 或使用 Ionide 的 Visual Studio Code 开发 F# 4.5 代码。

当 .NET Core SDK 2.1.400 和 Visual Studio 2017 版本 15.8 发布时,所有新项目引用的 FSharp.Core 将为 4.5.2,您无需执行此第二步。

您可能需要针对 .NET Core 才能使其工作,并且仅在将 FSharp.Core 包更新到 4.5.2 之后。

我还没有尝试过这些,但希望有帮助。

于 2018-08-09T06:01:23.537 回答