2013-01-15 23 views
7

我讀了優秀的24天hackage。我想給一個嘗試包configurator如何使用配置程序

我怎麼可以檢索像

herlist = [1, "foo", true] ? 
+0

'[1,「foo」,true]'不是一個有效的Haskell字符串,因爲它沒有簡單的類型。 –

+0

@DonStewart該示例不是Haskell代碼,而是使用配置器庫讀取的一行文本文件。它來自Configurator文檔。 – Heatsink

+4

我不知道爲什麼這個問題已經關閉。這是一個很好的問題,因爲這不在文檔中。 – user239558

回答

10

數據的列表,如果你有行

herlist = [1, "foo", true] 

中稱爲配置文件「 example.cfg「,那麼最簡單的程序來加載並顯示該值將是

{-# LANGUAGE OverloadedStrings #-} 

import Data.Configurator 
import Data.Configurator.Types (Value) 

main = do 
    cfg <- load [Required "example.cfg"] 

    lst <- require cfg "herlist" :: IO Value 

    print lst 

使用OverloadedStrings擴展名,以便我們可以將普通字符串文字用作配置鍵,而無需將它們明確轉換爲Text

當查找關鍵字"herlist"時,我們需要明確告訴編譯器我們期待的類型,因爲在像這樣的簡單程序中,除了打印值之外,編譯器無法從上下文中推斷出它。

類型Value是配置值的原始類型。在真正的程序中,我們通常會將Value轉換爲我們的程序使用的定製類型,方法是定義Configured類型的實例。

+0

Thx爲有用答案。但是,我是否必須將「cfg」作爲參數傳遞給每個需要訪問我的配置的函數?或者有什麼辦法可以成爲一個全局可訪問的數據結構,就像在main中初始化一樣,然後像一個常量那樣可訪問? Haskell仍然很新穎。 – kuttifunk

+0

你需要傳遞它。 – Obscaenvs

相關問題