【问题标题】:Running my program with command line arguments使用命令行参数运行我的程序
【发布时间】:2015-10-26 06:17:05
【问题描述】:

我正在尝试使用命令行运行我的程序。我正在尝试返回我的命令行参数:

import System.Environment   
import Data.List  

main :: IO()

main = do  
   args <- getArgs  
   progName <- getProgName  
   putStrLn "The arguments are:"  
   mapM putStrLn args  
   putStrLn "The program name is:"  
   putStrLn progName  

我通过使用我的参数调用主函数来执行代码:

main argument arguments "more arguements"

但是,我收到编译器错误:

<interactive>:33:6: Not in scope: ‘argument’
<interactive>:33:15: Not in scope: ‘arguments’

我如何用我的参数调用我的函数有问题吗?

【问题讨论】:

  • 你是在 GHCi 中调用这个吗?
  • 是的,我在 GHCi 中调用它。
  • 好吧 Zeta 更快 ;)
  • 天啊。那让我发疯了。谢谢!

标签: haskell


【解决方案1】:

如果你想模拟命令行参数,你必须使用:mainmain 单独只执行您的 IO () 操作,但实际上并不构建参数。据 GHCi 所知,main 不一定是 IO (),也可能是 Int -&gt; Int -&gt; IO ()

但是,如果您使用 :main,GHC 将使用 main,就像在 runhaskell 调用期间调用它一样,例如将以下参数解释为命令行参数。

或者,您可以使用System.Environment 中的withArgs

ghci> withArgs ["argument", "arguments", "more arguments"] main

【讨论】:

  • 这完全有道理。谢谢你的解释,泽塔!
猜你喜欢
  • 2011-04-13
  • 2021-11-26
  • 2018-06-22
  • 2023-03-24
  • 1970-01-01
  • 2013-10-26
  • 1970-01-01
相关资源
最近更新 更多