をFを試してみることができませんでした。私はこの試みをしているかどうかわかりませんが、パターンマッチと何らかの理由で再帰的に再帰的に呼び出すことができません。再帰的な関数f#
// Define my active recognizer for keywords
let(|MyGirlFriend|Bye|) input =
match input with
|"lonely|"love"|"friendship"
-> MyGirlFriend
|"goodbye"|"bye"|"go"|
-> Bye
|_
-> None
上記のコードが正しいと思います。
//recursive response function
let rec response (token: string) (str: string) =
match token with
| Bye
-> good_bye_response()
| RoomLocation
-> sprintf "%s" "Your call is log. Do you wish to quit?"
|_ when token.Contains("yes") -> "good bye" 0
|_ when token.Contains("no") -> answer_response()
| None when (str.IndexOf(" ") > 0)
-> response (str.Substring(0,str.IndexOf(" ")))
(str.Substring(str.IndexOf(" ")+1))
| None when (str.IndexOf(" ") < 0)
-> response str ""
私の機能は次のとおりです。
let rec chat() =
if Break = false then
let valueInput = Console.ReadLine()
printf "Helpdesk-BCU Response --> %s \n" (response "" valueInput)
if Break = false then
chat()
else
ChatEnd()
let BCU_response (str: string) =
if (str.IndexOf(" ") > 0) then
response (str.Substring(0,str.IndexOf(" "))) (str.Substring(str.IndexOf("
")+1)) + "\n"
else
response str "" + "\n"
ここでの問題のカップル| _ときtoken.Contains( "はい") - >の出口としてのF#で使用されているゼロ0 "さようなら"ここで私は赤い線を取得し、式は文字列型でなければならないが、int型であることを示します。ゼロはint型です。
再帰的ループを終了するにはどうすればよいですか?コード内のマイナーな問題のかなり多くがありますので
いかなるsugguestionは、完全にあなたが苦労しているものを一部明らかになっていない
インデントがオフです。正してください。 –