gpt4 book ai didi

haskell - 在 Haskell 中将 Maybe Int 转换为 Int

转载 作者:行者123 更新时间:2023-12-04 09:04:25 26 4
gpt4 key购买 nike

我正在处理以下代码,并希望在框字符串中找到数字的索引。所以我使用了 findIndex 但它返回 Maybe Int 值,而我只想要 Int 值。

我如何将 Maybe Int 转换为 Int 值,或者有什么方法可以从 Maybe Int 中提取 Int。如果 Maybe Int 什么都不是,代码应该打印一条错误消息

box:: String
box = unlines $ ["0 | 1 | 2",
"---------",
"3 | 4 | 5",
"---------",
"6 | 7 | 8"]

moves = do
putStrLn " Enter the number"
number <- readLn :: IO Int
print number
findpostion number box

findposition number box = findIndex (==number) box

最佳答案

您可以使用 do 中的模式匹配轻松做到这一点。陈述:

case findposition number box of
Just n -> -- do whatever with n
Nothing -> putStrLn "Invalid number!" -- you can handle the error however you want.

一个不错的选择是创建一个单独的 IO 操作来获取数字:
getNumber = do putStrLn "Enter the number:"
number <- readLn
case findposition number box of
Just n -> -- Do whatever
Nothing -> putStrLn "Please try again." >> getNumber

这样,如果用户输入了无效号码,它只会再次询问。

此外,正如现在所写的那样,您的代码将无法正常工作。您应该有一些其他方式将数字存储在 box 中。作为实际数字;现在,它们在字符串中。

关于haskell - 在 Haskell 中将 Maybe Int 转换为 Int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8905272/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com