首页 \ 问答 \ F#编译器警告[关闭](F# Compiler warning [closed])

F#编译器警告[关闭](F# Compiler warning [closed])

我在fsharp函数中有一个简单的模式匹配表达式,它不断生成编译器警告,我想知道是什么导致了这个以及我需要做些什么来防止它。

在我的简化示例中,我尝试提取正则表达式匹配的第二组,然后使用模式匹配,如果表达式无法匹配,则返回None;如果匹配,则返回Some(SecondGroupValue)。

let GetGroup2 s = 
    let pattern = @"(d+)(.+)(d+)"
    let m : Match = Regex.Match(s, pattern) 

    // this generates a warning :
    match m.Success with 
    | true -> 
        if (m.Groups.Count >= 3) then (string)m.Groups.[2] |> Some  else  None
    | false -> None

我得到的警告是:

此表达式应具有类型“unit”,但具有“string option”类型。 使用ignore丢弃表达式的结果,或者“let”将结果绑定到名称。

此函数用于返回'字符串选项'。 什么是编译器试图警告我?


I have a simple pattern matching expression in an fsharp function that keeps generating a compiler warning and I would like to know what is causing this and what I need to do to prevent it.

In my simplified example I am trying to extract the second group of a regular expression match and then use pattern matching to either return None if the expression cannot be matched or Some(SecondGroupValue) if there is a match.

let GetGroup2 s = 
    let pattern = @"(d+)(.+)(d+)"
    let m : Match = Regex.Match(s, pattern) 

    // this generates a warning :
    match m.Success with 
    | true -> 
        if (m.Groups.Count >= 3) then (string)m.Groups.[2] |> Some  else  None
    | false -> None

The warning I am getting is:

This expression should have type 'unit', but has type 'string option'. Use ignore to discard the result of the expression, or 'let' to bind the result to a name.

This function is meant to return 'string option'. What is the compiler trying to warn me about?


原文:https://stackoverflow.com/questions/33777978
更新时间:2019-09-11 13:52

最满意答案

重新启动Visual Studio和我的计算机后,IDE停止显示警告。 我为浪费任何人的时间而道歉。


After restarting Visual Studio and my computer, the IDE stopped displaying the warning. My apologies for wasting anyone's time.

2015-11-18

相关问答

更多

在主模板的编辑器中如何使solr搜索对象?(How to make object of solr search in editor of main template?)

您需要使用基本的Solr TypoScript。 You need to use the basic Solr TypoScript.

分段错误:C ++使用lambda比较器对字符串向量进行排序(Segmentation Fault: C++ sort an string vector with lambda comparator)

您的比较功能不是有效的。 它在无反射性( comp(x,x)永远不会是真 )和不对称( 如果comp(x,y)为真,然后comp(y,x)必须为假 )两者都失败,两者都是严格弱排序哪些std::sort需要它的比较器。 operator<或operator>满足此要求。 但是operator<=和operator>=不。 如果您将比较函数更改为: auto comp = [](const string& first, const string& second)->bool { retur

通过HTTP访问AEM 6.2错误日志(Accessing AEM 6.2 error logs over HTTP)

一位同事在聊天中为我解答了这个问题,所以我将它放在这里,以便将来更容易找到。 OSGi控制台中现在有一个整洁的实用程序,可以查看日志以及配置各种记录器。 你可以在http:// localhost:4502 / system / console / slinglog找到它 Appender选项卡提供指向可用于通过HTTP加载日志的各种日志文件的链接。 这是一个示例请求: http://localhost:4502/system/console/slinglog/tailer.txt?tail=1

用DataTrigger绑定到Style中的Self(Binding to Self in Style with DataTrigger)

你为什么不把它改为触发器? <Style x:Key="MyButtonStyle" TargetType="Button"> <Style.Triggers> <Trigger Property="IsEnabled" Value="False"> <Setter Property="Background"

Java:求和2 ^ 1000的所有数字(Java: Summing all digits of 2^1000)

整个方法有点不对劲。 看到这个: private static BigInteger sumOfDigits(BigInteger n) { BigInteger sum = BigInteger.ZERO; while (n.compareTo(BigInteger.ZERO) == 1) { sum = sum.add(n.remainder(ten)); n = n.divide(ten); } return sum; }

属性路由不适用于Put请求(Attribute routing doesn't work on Put request)

使用PUT请求发送数据的默认方式是通过正文。 所以第一步是在参数的前面添加一个[FromBody]。 如果您发送内容类型为json的数据,那么我将创建一个对象作为参数,而不是包含一个消息参数。 public class jsonMessage { public string message {get; set; } } 使用jsonMessage类作为控制器方法中[FromBody]的参数 [HttpPut] [Route("v2/myaction/somethingelse")] p

如果条件未按预期工作,MySQL AFTER DELETE触发器(MySQL AFTER DELETE trigger if condition is not working as expected)

我不同意,这是为什么。 drop trigger if exists Tafter_aff_purchases; delimiter // CREATE DEFINER=`root`@`localhost` TRIGGER `Tafter_aff_purchases` AFTER delete ON `aff_purchases` FOR EACH ROW BEGIN #insert into errors (msg) values (concat('old.id = ',o

C#中for循环中的两个计数器(Two counters in a for loop for C#)

如果我的理解正确,你想这样做: for (int j = mediumNum, k = 0; j < hardNum && k < mediumNum; j++, k++) If I am understanding correctly, you want this: for (int j = mediumNum, k = 0; j < hardNum && k < mediumNum; j++, k++)

相关文章

更多

最新问答

更多
  • asp.net任意用户信息(asp.net arbitrary user info)
  • 如何使用python计算docx文件中表中行的值(How to count the row's values in tables in docx file by using python)
  • MySQL:用户访问和数据库覆盖(MySQL: User access and DB overwriting)
  • 还有另一种“使用未分配的局部变量”的问题(Yet Another “Use of unassigned local variable 'whatever' ” question)
  • 开源证书颁发机构软件(Open source certificate authority software)
  • Rails中的迭代form_for是在create上添加模型的所有实例(Iteration in Rails form_for is adding all instances of model on create)
  • 如何扩展我的表视图单元格?(How to expand my table view cell?)
  • 如何使用SPARQL区分Thing和无生命对象(How to differentiate between a Thing and an inanimate object with SPARQL)
  • 在IdentityServer中,Client Secrets和Scope Secrets有什么区别?(In IdentityServer, what is the difference between Client Secrets and Scope Secrets?)
  • 如何在具有附加类时重写类(How do I override a class when it has a attached class)
  • 如何使用Git在Azure上部署C#,MVC4应用程序(How to deploy a C#, MVC4 application on Azure using Git)
  • Sitecore 7内容搜索爬网程序根目录之外的索引项(Sitecore 7 Content Search indexing items outside of crawler root)
  • 我应该在线课程使用utf-8编码吗?(Should I use utf-8 encoding for an online course?)
  • 如何在Cucumber-JS步骤定义中使用Node-mysql连接到MySQL?(How to connect to MySQL using Node-mysql in a Cucumber-JS step definition?)
  • 在MVC 4中的google.maps.LatLng(lat,lon)中将JSON字符串值分配给纬度和经度(Assign the JSON string value to Latitude and Longitude in google.maps.LatLng(lat,lon) in MVC 4)
  • awk:通过特定的分隔符删除字符串(awk: remove strings by specific delimiter)
  • 如何测试Vista的应用程序(How to test app for Vista)
  • Elasticsearch聚合器 - 缺失值的工作原理(Elasticsearch aggregators - How missing values work)
  • 绘制datetime.date熊猫(Plot datetime.date pandas)
  • PostgreSQL作为WSO2 EI和APIM + IS的数据源(PostgreSQL as datasource for WSO2 EI and APIM+IS)
  • 如何使用bash在postgres中运行alter table脚本(How to run alter table script in postgres using bash)
  • 可能使用PHP阻止整个美国州访问我的网站?(Might it be possible to block an entire US state from accessing my site, using PHP?)
  • restangular删除并输入错误网:: ERR_NAME_NOT_RESOLVED(restangular remove and put error net::ERR_NAME_NOT_RESOLVED)
  • 常见问题解答的Modx(Revolution)搜索功能(Modx(Revolution) search function for FAQs)
  • Rubymine如何使用远程口译员和Git?(How Does Rubymine Work With Remote Interpreters and Git?)
  • prepareForSegue和PerformSegueWithIdentifier发件人(prepareForSegue and PerformSegueWithIdentifier sender)
  • postgrsql与PowerShell无提示安装问题(postgresql silent installation issue with powershell)
  • 比较两个greps的输出(Comparing output from two greps)
  • 使用.NET RIA Data Services删除Silverlight 3中的数据(Deleting data in Silverlight 3 with .NET RIA Data Services)
  • 此行中AND运算符的含义(meaning of the AND operator in this line)