首页 \ 问答 \ 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

相关问答

更多

编译警告 - ARM交叉编译器(Compile Warning - ARM Cross Compiler)

感谢你的评论和无声的 噪音 要解决警告 ,需要导出符号。 对于上述问题所在 EXPORT_SYMBOL(omap_device_build) in omap_device.c EXPORT_SYMBOL(omap_hwmod_lookup) in omap_hwmod.c 并编译内核。 然后针对编译的内核编译可加载的内核模块。 执行以下操作以验证是否已导出符号 grep omap_device_build /proc/kallsyms or grep omap_device_build Mo

在Clojure Repl中重新编译函数会导致编译器警告(Recompiling functions in Clojure Repl cause compiler warning)

我没有编辑demoscene.cljs 我认为这可能会重新加载,因为您编辑的文件需要它: core.cljs 。 为什么cljs.core/update替换ns.demoscene/update 每当定义与core命名空间函数同名的函数时,您都会看到此警告,因为这些core函数在命名空间中始终可用。 警告告诉你,该命名空间中的任何update调用都不会是cljs.core/update ; 它将是您在命名空间中定义的update功能。 您可以明确地排除您想要在命名空间中“掩盖”的任何core功能, ...

使用枚举内部类型 - 编译器警告C4482 C ++(Using enum inside types - Compiler warning C4482 C++)

是的,枚举不创建新的“命名空间”,枚举中的值可以在周围的范围内直接使用。 所以你得到: enum sample { SAMPLE_ONE = 1, SAMPLE_TWO = 2 }; int main() { std::cout << "one = " << SAMPLE_ONE << std::endl; return 0; } Yes, enums don't create a new "namespace", the values in the enum are dir

Razor编译器警告/错误 - ASP.NET MVC 4(Razor Compiler Warning/Errors - ASP.NET MVC 4)

Arrrgghhh我错过了ROOT Web.config中的以下内容: <compilation debug="true" targetFramework="4.0"> <!-- New --> <assemblies> <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add assembly="Sy ...

c gcc编译器选项,用于指针算术警告(c gcc compiler options for pointer arithmetic warning)

你是对的。 -Wpointer-arith应该根据文档给你一个警告。 我刚刚尝试了以下程序(故意错误): ~/code/samples$ cat foo.c #include <stdio.h> int main (int argc, char **argv) { void * bar; void * foo; foo = bar + 1; return 0; } 我只使用-Wpointer-arith选项编译了程序,以及上面列出的所有选项。 两次尝试都引发了预期的警告。 我使用 ...

VisualStudio2008奇怪的编译警告,需要解释(VisualStudio2008 strange of compiler warning, explanation needed)

Eric Lippert写了一篇关于此的文章 ,所以我将留给他解释: 通常,C#会警告所有永远不会读取的变量和字段,从不写入等等。但是在这种情况下,如果赋值不是常量表达式,我们会故意抑制警告。 这是因为在Visual Studio调试器中没有好的方法来说“显示最后一个函数调用的返回值”。 虽然我同意你明智地指出解决这个问题的方法是修复调试器,因为我没有能力修复它,我们需要为客户提供C#解决方案。 有关详细说明,请参阅文章 Eric Lippert wrote an article on this, ...

从方法调用中删除编译器的警告,建议需要(Removing compiler's warning from a method call, advise needed)

你应该测试这两种情况: assertTrue(Utils.isStringEmptyOrNull(new String[] { null })); assertTrue(Utils.isStringEmptyOrNull((String[]) null)); ...虽然我不清楚为什么一个听起来像它的方法应该只采用一个字符串的方法首先采用一串字符串,老实说。 (对你而言,没有演员表示你所指的那些调用是否明显?这对我来说并不明显......我必须仔细查看。) You should probably ...

Action与单元之间的重载分辨率的模糊性 - > F#中的单元类型(Ambiguity on overload resolution between Action and unit -> unit types in F#)

F#为您插入转换为Action ,因此您可以(理论上)使用一种方法。 type Foo() = static member Test (act : Action) = act.Invoke() Foo.Test (fun () -> ()) 我无法弄清楚如何强制编译器在Action和unit -> unit之间进行选择。 另外两个选择: 使Action重载主要并执行Foo.Test(Action(act)) 将逻辑放在从公共方法调用的第三个函数中 但我的建议是采取Action的单一方

相关文章

更多

最新问答

更多
  • .net Rx:消息的有序批处理(.net Rx: in-order batch-processing of messages)
  • 查询在给定区域中包含全景图的商业场所的api?(Query places api for business venues in given area which contain panoramas?)
  • linux启动的时候的两条进度条各表示在加载什么?
  • 测试是否已存在某些内容(Testing if something already exists)
  • iOS7和jQuery mobile:面板在打开和关闭后变为空白(iOS7 and jQuery mobile: panel goes blank once opened and closed)
  • 在Spring中结合GET和POST请求方法(Combine GET and POST request methods in Spring)
  • 从Geany内部运行应用程序的多个实例(Run multiple instances of an application from inside Geany)
  • 使用Yii2在邮件中嵌入图像时出错(Error when embed image in mail using Yii2)
  • 带有不同频率的LED计数器程序(0 - 15)(Led Counter Program (0 - 15) with different frequencies)
  • Google支持SAML 2.0 ECP(Google support for SAML 2.0 ECP)
  • 如何识别结构构件的尺寸?(How can i identify the size of structure member?)
  • 带有计数器的列表迭代中的Netlogo列表(Netlogo list in list iterations with counter)
  • Eclipse CDT中对函数的未定义引用(undefined reference to function in Eclipse CDT)
  • 如何确定一个类是否是java中接口的实现(How to determine if a class which is an implemenation of an interface in java)
  • Wireshark捕获过滤器示例(Wireshark Capture Filter Example)
  • 什么是NoSQL?(What exactly is NoSQL?)
  • 如何在sass中编写媒体查询?(How to write media queries in sass?)
  • spring destroy-method +请求范围bean(spring destroy-method + request scope bean)
  • ssis包中全局表的范围(Scope of Global Table in ssis package)
  • 如何在较小的屏幕上禁用Bootstrap的“词缀”?(How can I disable Bootstrap's “affix” on smaller screens?)
  • SQLite Min函数在使用String数据的行中返回NULL(SQLite Min function returns NULL in row with String data)
  • 如何在Cordova中更新应用程序版本(How to update app version in Cordova)
  • 当我在while循环中使用char []读取Android中的文本文件时出现重复行(repeated lines when I use char[] in while loop for reading text file in Android)
  • 有没有办法按顺序打印数组,在[TCL]中输入条目(Is there a way to print array in order with entries entered in that [TCL])
  • 如何在倒排索引结构中搜索短语查询?(How to search phrase queries in inverted index structure?)
  • 导致在WCF中返回HTTP错误状态(Causing HTTP error status to be returned in WCF)
  • qsqltablemodel不兼容的数据类型(qsqltablemodel incompatible data types)
  • 如何在没有包的情况下引用Java文件?(How can I reference Java files without packages?)
  • Rails 4.1.1相关模型属性,嵌套表单不保存(Rails 4.1.1 related model attribute with nested form not saving)
  • 如何将byte []转换成字符串?(How to convert UTF-8 byte[] to string?)