【问题标题】:how to pass string type list in F# function如何在 F# 函数中传递字符串类型列表
【发布时间】:2018-12-17 00:29:19
【问题描述】:

此代码给出错误 FS0001:此表达式应具有“字符串”类型,但此处的类型为“'a * 'b'”

open System 
open System.Linq

let list1 = [ "one"; "two"; "three" ]
let list2 = [ "one"; "two"; "three" ]

let tablesValidation (l1 : string list) (l2 : string list) =
    printfn "%O" l1
    printfn "%O" l2


tablesValidation(list1,list2)
Console.ReadKey() |> ignore

【问题讨论】:

    标签: f#


    【解决方案1】:

    在 F# 中,函数参数不需要括号,并且由空格分隔。改成这样:

    tablesValidation list1 list2
    

    您的原始版本将元组值作为单个参数传递,因此出现错误消息,其中a * b 表示具有两个字段的元组。

    【讨论】:

    • 还有一个问题@Chad Gibert f# 中 linq 的 Expect 替代方案是什么?
    • 如果您正在谈论在 Linq 中模拟 Except,您可能想尝试 F# 的 Seq.filter
    • 是的,我也在尝试同样的方法:)
    • 例如,如果我想在上面提到的代码中应用相同的内容,那我该怎么做?
    • 你可以像这样定义一个自定义的except函数:let except a b = let set = Set b in Seq.filter (not << set.Contains) a
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 2019-06-01
    • 1970-01-01
    相关资源
    最近更新 更多