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#中,如何使用Array.Pick-on字符串?_F# - Fatal编程技术网

在F#中,如何使用Array.Pick-on字符串?

在F#中,如何使用Array.Pick-on字符串?,f#,F#,(新手问题) 在F#中,请假设一个公司名称数组的格式为: “阿拉巴马州伯明翰蓝十字蓝盾” 下面是GetAllCompanys从数据库中读取公司名称和城市的位置: CompanyNames = GetAllCompanies |> Array.map (fun i -> sprintf "%s , %s" i.companyname i.city ) 这失败了,但这是我最好的尝试。也就是说,将公司名称和城市作为如上所示的字符串,我想找回它来自的公司(y是公司,上面

(新手问题)

在F#中,请假设一个公司名称数组的格式为:

“阿拉巴马州伯明翰蓝十字蓝盾”

下面是GetAllCompanys从数据库中读取公司名称和城市的位置:

CompanyNames = GetAllCompanies |> Array.map (fun i -> sprintf "%s , %s" i.companyname i.city )
这失败了,但这是我最好的尝试。也就是说,将公司名称和城市作为如上所示的字符串,我想找回它来自的公司(y是公司,上面的城市字符串):

编译器在uAS上发出警告:“此规则永远不会匹配”

这是怎么做到的

短暂性脑缺血发作


为了澄清,我将得到一个由用户输入的字符串“company name”+,“+”city。我需要检查这个字符串是否匹配根据公司详细信息生成的“company name”+,“+”city”组合字符串,然后在匹配时返回所有公司详细信息。GetAllCompanys返回公司详细信息数组。谢谢。

我想你问错问题了。似乎您正试图找到第一家与用户输入匹配的公司。除非您要转换找到的公司,否则Array.pick不是正确的函数,您应该使用另一个函数。如果找不到该公司,您可能也不希望出现例外情况

type Company = { Name: string; City: string }

let companies =
    [|
        { Name = "Foo"; City = "Oslo"}
        { Name = "Bar"; City = "Lillehammer"}
    |]
    
let userInput = "Bar,Lillehammer"

let company =
    companies
    |> Array.tryFind (fun c -> c.Name + "," + c.City = userInput)
现在你可以在公司里竞争了


仍然存在一些弱点。其中两个:如果几个公司匹配用户输入,会怎么样?如果您想在交互输入过程中向用户展示所有这些内容,那么我将使用Array.filter。如果用户键入空格,例如逗号后的空格,该怎么办?或者,如果公司信息中有逗号?

请查看此答案:@FyodorSoikin在发布此问题之前,我已多次阅读该答案。我不明白这怎么适用于我的情况。请解释一下。谢谢。这意味着与的匹配在第一种情况下没有任何可测试的内容,因为您只需将结果命名为
y
,然后返回
Some k
。由于
y
匹配并捕获所有内容,因此
永远不能命中。
y
\u
都应该在比赛中最后使用。你说得太对了!但是,在这种情况下,我坚持主数据库密钥在(companyname,city)上是唯一的。事后看来,我可能应该将输入字符串缩减为companyname和city上的一个元组,然后对其进行挑选。但我确实想学习如何在字符串上使用“pick”。(我仍在学习:)谢谢。你是F#Slack吗?它更适合于学习和长时间讨论类似的事情,你会得到快速的回答和跟进。我们有几千人,包括F#社区中的大牌。所以它主要适用于问答,但它的形式对于学习和讨论来说并不理想。
type Company = { Name: string; City: string }

let companies =
    [|
        { Name = "Foo"; City = "Oslo"}
        { Name = "Bar"; City = "Lillehammer"}
    |]
    
let userInput = "Bar,Lillehammer"

let company =
    companies
    |> Array.tryFind (fun c -> c.Name + "," + c.City = userInput)