2013-01-15 10 views
7

Ho letto gli eccellenti 24 giorni di hackage. E mi piacerebbe dare una prova per il pacchetto configuratorCome utilizzare il configuratore

come posso recuperare un elenco di dati, come

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

'[1," foo ", true]' non è una stringa Haskell valida, in quanto non ha un tipo semplice. –

+0

@DonStewart L'esempio non è il codice Haskell, ma una riga di un file di testo da leggere utilizzando la libreria Configurator. È preso dalla documentazione di Configurator. – Heatsink

+4

Non so perché questa domanda è stata chiusa. È una domanda eccellente perché non è trattata nella documentazione. – user239558

risposta

10

Se avete la linea

herlist = [1, "foo", true] 

in un file di configurazione chiamato " example.cfg ", quindi il programma più semplice da caricare e mostrare quel valore sarebbe

{-# 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 

L'estensione OverloadedStrings viene utilizzata in modo da poter utilizzare normali valori stringa normali come chiavi di configurazione senza doverli convertire esplicitamente in Text.

Quando si cerca la chiave "herlist", è necessario indicare esplicitamente al compilatore il tipo che ci si aspetta, perché in un programma semplice come questo in cui non facciamo altro che stampare il valore, il compilatore non può dedurlo dal contesto.

Il tipo Value è il tipo non elaborato per i valori di configurazione. In un programma reale di solito convertiamo lo Value in un tipo personalizzato utilizzato dal nostro programma definendo un'istanza della classe di tipo Configured.

+0

Thx per la risposta utile. Ma devo passare "cfg" come parametro per ogni funzione che deve avere accesso alla mia configurazione? O c'è qualche mezzo per essere una struttura di dati accessibile a livello globale, come essere inizializzati in main e quindi accessibili come dire una cosa simile costante? Ancora molto nuovo per haskell. – kuttifunk

+0

Devi passarlo in giro. – Obscaenvs

Problemi correlati