5
我需要帮助,我必须读取像这样的列表["1", "2", "3"]
并将其整数列表[1,2,3]
,所以我使用read
。当我对整数列表进行“读取”操作时,如何捕获错误?
问题是,当列表看起来像["1", "2", "a"]
程序退出,因为它有一个字符的错误。
如何检查或抛出错误以防止此错误?
我需要帮助,我必须读取像这样的列表["1", "2", "3"]
并将其整数列表[1,2,3]
,所以我使用read
。当我对整数列表进行“读取”操作时,如何捕获错误?
问题是,当列表看起来像["1", "2", "a"]
程序退出,因为它有一个字符的错误。
如何检查或抛出错误以防止此错误?
您应该使用reads
而不是read
。
Prelude> :m Data.Maybe
Prelude Data.Maybe> (map (fmap fst . listToMaybe . reads) ["1", "2", "3"]) :: [Maybe Integer]
[Just 1,Just 2,Just 3]
Prelude Data.Maybe> (map (fmap fst . listToMaybe . reads) ["1", "2", "a"]) :: [Maybe Integer]
[Just 1,Just 2,Nothing]
Prelude Data.Maybe>
请注意,这将愉快地将“123abc”变成“123”。您还需要检查元组的第二个元素是否为空以防止发生这种情况。 – sepp2k 2011-06-09 07:51:49
@ sepp2k良好的通话。 – 2011-06-09 09:44:50