我需要将命令行参数字符转换为Ints.我想将每个变量分配给变量并在我的函数中使用它们.我有以下内容:
import System.Environment
getIntArg :: IO Int
getIntArg = fmap (read . head) getArgs
main = do
n <- getIntArg
print n
Run Code Online (Sandbox Code Playgroud)
但是,它不会遍历只打印一个的所有参数.另外,我会将每个分配给一个变量来使用吗?
我是FP的新手.
如果你想将所有参数映射到Int你应该使用的s
getIntArgs :: IO [Int]
getIntArgs = fmap (map read) $ getArgs
Run Code Online (Sandbox Code Playgroud)
或者更短一些:
getIntArgs = map read <$> getArgs
Run Code Online (Sandbox Code Playgroud)
代替.
这样你就可以做到
main = do
ns <- getIntArgs
print ns
Run Code Online (Sandbox Code Playgroud)
然后得到你感兴趣的那些,(!!)或者如果你知道/期望至少有一定数量的Int- 参数
(n1:n2:n3:_) <- getIntArgs
Run Code Online (Sandbox Code Playgroud)
但是你当然应该首先检查长度 - 如果用户决定输入无法解析为Ints的东西,这也会失败
因此,如果您不想重新发明轮子(如果您想要学习或者只需要快速解决方案可能没问题),您可能希望环顾四周并使用现有的包 - 例如parseargs为您执行此操作
| 归档时间: |
|
| 查看次数: |
240 次 |
| 最近记录: |