簡體   English   中英

PureScript - 使用命令行將 arguments 傳遞給 main

[英]PureScript - Pass arguments to main using the command line

PureScript 程序導出一個main function,它在您運行程序時被調用。 但不清楚如何將 arguments 傳遞給它,或者是否可能。

考慮以下將字符串大寫的簡單程序。

module Main where

import Effect (Effect)
import Effect.Console (log)
import Prelude (Unit, discard)

import Data.String (toUpper)

message :: String 
message = "Satisfaction Rating: 8.23"

main ∷ Effect Unit
main = do
  log ( toUpper ( message ) )

哪些輸出

SATISFACTION RATING: 8.23

該程序在調用spago run時執行。

我的問題如下:代碼示例中的參數message如何通過命令行傳入,創建自定義消息大寫字母?

更新后的運行命令類似於:

spago run --message="new_message"

更新后的 output 看起來像

NEW_MESSAGE

簡而言之,如何從外部將值傳遞給 PureScript 程序?

當您使用spago run執行 PureScript 程序時,它會在 Node 下運行。 因此,要獲取命令行 arguments,您需要作為 Node.

看看:有一個用於相關 Node 設施的 PureScript 綁定 - 來自purescript-node-process argv function 這是一個返回 arguments 數組的效果:

import Node.Process (argv)

main = do
  args <- argv
  log $ show args

快速檢查spago run --help表明可以通過-b參數將 arguments 傳遞給程序:

spago run -b somearg

對於多個 arguments,引用它們:

spago run -b "somearg anotherarg"

請注意,這適用於 Linux(並且可能是 macOS),但在 Windows 上失敗,其中 Spago 出於某種原因忽略引號並嘗試將anotherarg解釋為它自己的參數。 這顯然是一個錯誤。 這個問題似乎相關。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM