【发布时间】:2019-03-12 08:37:23
【问题描述】:
我有一个检查用户名是否有效的函数的作业。允许的字符是下划线、字母和数字。我不允许使用索引 (!!) 和 Length
到目前为止我的代码:
isValid' :: Char -> Bool
isValid' x
| x == '_' = True
| x `elem` ['0'..'9'] = True
| x `elem` ['a'..'z'] = True
| x `elem` ['A'..'Z'] = True
| otherwise = False
isValidUsername :: [Char] -> Bool
isValidUsername x
| map isValid' x = True
| otherwise = False
我想对我放入 isValidUsername 的字符串的所有字符运行我的 isValid 函数。例如:
isValidUsername "MyUsername_123" 应该返回 True
isValidUsername "not@v@lidusern@me* *2" 应该返回 False
我只是不知道如何遍历字符串的所有字符。
【问题讨论】:
-
"对字符串的所有个字符运行我的 isValid 函数" -->
all -
作为风格建议,您不必写
f .. | condition = True ; | otherwise = False。你的condition已经被评估为想要的布尔值,所以你可以简单地写f .. = condition,没有警卫。