Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F# 为什么在F中的匹配语句中会出现“value unused”警告_F#_Rider - Fatal编程技术网

F# 为什么在F中的匹配语句中会出现“value unused”警告

F# 为什么在F中的匹配语句中会出现“value unused”警告,f#,rider,F#,Rider,我有以下代码: try let s = orderId.Split('|') match (s.[0], s.[1]) with | "G", coreGuid -> OrderClass.Grid | "C", coreGuid -> OrderClass.Close | _, _ -> OrderClass.External with _ ->

我有以下代码:

   try
        let s = orderId.Split('|')
        match (s.[0], s.[1]) with
        | "G", coreGuid ->  OrderClass.Grid
        | "C", coreGuid ->  OrderClass.Close
        | _, _          ->  OrderClass.External
    with _ ->
        OrderClass.External
它采用字母| guid形式的字符串,然后尝试匹配它。 我想要实现的逻辑是:

if s.[0] = "G" && s.[1] = coreGuid   for the first line, and
if s.[0] = "C" && s.[1] = coreGuid   for the second line
但我的IDE Rider 2020.1 MacOs给了我以下警告:


我不明白为什么?

这是因为在模式部分,变量正在捕获匹配的值。这意味着无论s.[1]的值是什么,它都将绑定到名称coreGuid,以便在右侧使用。IDE让您知道您在任何地方都不使用它

这是一条有用的错误消息,因为您的代码没有达到预期的效果。它正在忽略s[1]的值。每当一个变量出现在模式中时,这意味着该字段可以有任何值

我认为这应该像你期望的那样起作用:

    | "G", g when g = coreGuid ->  OrderClass.Grid

这是因为在模式部分中,变量正在捕获匹配的值。这意味着无论s.[1]的值是什么,它都将绑定到名称coreGuid,以便在右侧使用。IDE让您知道您在任何地方都不使用它

这是一条有用的错误消息,因为您的代码没有达到预期的效果。它正在忽略s[1]的值。每当一个变量出现在模式中时,这意味着该字段可以有任何值

我认为这应该像你期望的那样起作用:

    | "G", g when g = coreGuid ->  OrderClass.Grid

好的,我明白了;我感到困惑的是,如果我的匹配是| G,例如1,它会起作用,对吗?但如果我不放一个常数,而是一个现有的场,它被一个捕捉马赫值的临时变量所遮蔽,对吗;我感到困惑的是,如果我的匹配是| G,例如1,它会起作用,对吗?但是如果我不放一个常数,而是一个现有的字段,它会被一个临时变量所遮蔽,这个临时变量捕捉马赫值,对吗?如果字符串格式允许,你也可以匹配一个特定长度的数组;当G=coreGuid->时,将orderId.Split“|”与|[| G;G |]匹配。如果字符串格式允许,还可以匹配特定长度的数组;当G=coreGuid->时,将orderId.Split“|”与|[| G;G |]匹配。。。