我对F#语言和功能优先的方法还很陌生,因为我只使用面向对象的语言。
我正在尝试创建一个简单的Word Guesser控制台应用程序。 我正在使用的功能是能够一次猜出多个字符
由于我想采用一种功能性的方法,因此很难拼凑出一种很好的方法来完成此操作,并且最终总是遇到不可变数组等问题。
我正在尝试替换/显示给定单词的索引上的字符,这对应于猜测并返回结果字符串
有线索吗?
衷心问候Kalrin
答案 0 :(得分:2)
易于获得的功能性方法是使用匹配项,但重新生成新的字符串。
您可能还想使用Some / None(如果您查看函数的签名,它会根据您的函数为您提供一个选项字符串,这是一种编写函数的实用方法,但是如果您需要一个空链,您也可以返回一个)。请参阅F#fsharpforfunandprofit.com的圣经
一些评论:
https://fsharpforfunandprofit.com/posts/the-option-type/
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)