Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.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
String FSharp F中的字符串编辑问题#_String_Replace_Build_F# - Fatal编程技术网

String FSharp F中的字符串编辑问题#

String FSharp F中的字符串编辑问题#,string,replace,build,f#,String,Replace,Build,F#,我对F#语言和函数优先方法非常陌生,因为我只使用过面向对象的语言 我正在尝试创建一个简单的单词猜测控制台应用程序。 我正在研究的功能是能够同时猜测多个字符 我很难拼凑出一个很好的方法来实现这一点,因为我想采用函数式方法,最终总是会遇到不可变数组之类的问题 以下是我的想法: 我试图替换/显示给定单词索引上的字符,该字符对应猜测并返回结果字符串 有线索吗 亲切地问候Kallin一种很容易获得的功能性方法是使用匹配,但重新生成一个新字符串 您可能还希望使用Some/None(如果查看其签名,函数将为

我对F#语言和函数优先方法非常陌生,因为我只使用过面向对象的语言

我正在尝试创建一个简单的单词猜测控制台应用程序。 我正在研究的功能是能够同时猜测多个字符

我很难拼凑出一个很好的方法来实现这一点,因为我想采用函数式方法,最终总是会遇到不可变数组之类的问题

以下是我的想法:

我试图替换/显示给定单词索引上的字符,该字符对应猜测并返回结果字符串

有线索吗


亲切地问候Kallin一种很容易获得的功能性方法是使用匹配,但重新生成一个新字符串

您可能还希望使用Some/None(如果查看其签名,函数将为您提供一个选项字符串,这是一种函数式的写入方式,但如果您需要一个空链,也可以返回一个)。请参阅《圣经》中的F#fsharpforfunandprice.com

几点意见:

  • Net中的OOP(比方说C#):您将使用子字符串方法而不是for循环
  • 小心,Substirng可能会返回异常(如果您将鼠标放在它上面,它会在消息框中告诉您),并且为了避免在运行时出现任何问题(因为我们通常不会在fsharpforfunandprofice上的F#-cf Railway编程中处理异常),您需要第二个匹配来检查长度

让stringContains(单词:string)(隐藏:string)(猜测:string)=
将word.IndexOf(guess)与匹配
|-1->无
|ind->match(hidden.Length一些(猜测)
|false->Some(隐藏的子字符串(0,ind)+猜测)

一种很容易获得的功能性方法是使用匹配项,但重新生成一个新字符串

您可能还希望使用Some/None(如果查看其签名,函数将为您提供一个选项字符串,这是一种函数式的写入方式,但如果您需要一个空链,也可以返回一个)。请参阅《圣经》中的F#fsharpforfunandprice.com

几点意见:

  • Net中的OOP(比方说C#):您将使用子字符串方法而不是for循环
  • 小心,Substirng可能会返回异常(如果您将鼠标放在它上面,它会在消息框中告诉您),并且为了避免在运行时出现任何问题(因为我们通常不会在fsharpforfunandprofice上的F#-cf Railway编程中处理异常),您需要第二个匹配来检查长度

让stringContains(单词:string)(隐藏:string)(猜测:string)=
将word.IndexOf(guess)与匹配
|-1->无
|ind->match(hidden.Length一些(猜测)
|false->Some(隐藏的子字符串(0,ind)+猜测)

为什么不构建并返回一个新的
hiddenWord
,而不是尝试对传递的单词进行变异?这将是我迈向更实用的方法的第一步。这是我的想法,但我真的不知道如何实现这一点。我试过很多次谷歌搜索,也看了一些f#教程,但我似乎对此束手无策。如果你以前没有找到任何帮助,我下班后会给你写一些东西。谢谢!我将非常感激。同时我也将尝试解决它。OOP on.Net->我们使用string类中的方法Substring,而不是循环。此外,如果hiddenword比startIndex短,则代码可能在运行时引发异常。。。。。您应该阅读所有这些内容,了解F#/FP是如何工作的为什么不构建并返回一个新的
hiddenWord
,而不是尝试对传递的单词进行变异?这将是我迈向更实用的方法的第一步。这是我的想法,但我真的不知道如何实现这一点。我试过很多次谷歌搜索,也看了一些f#教程,但我似乎对此束手无策。如果你以前没有找到任何帮助,我下班后会给你写一些东西。谢谢!我将非常感激。同时我也将尝试解决它。OOP on.Net->我们使用string类中的方法Substring,而不是循环。此外,如果hiddenword比startIndex短,则代码可能在运行时引发异常。。。。。你应该阅读所有这些来了解F#/FP是如何工作的@Kalrin-是你执行的吗?@Kalrin-是你执行的吗?
let stringContains (word:string) (hidden:string) (guess:string) =
    match word.IndexOf(guess) with
    | -1 -> None
    | ind -> match (hidden.Length < ind) with
                     | true -> Some (guess)
                     | false -> Some (hidden.Substring(0, ind) + guess)