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] ?
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] ?
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
.
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
Devi passarlo in giro. – Obscaenvs
'[1," foo ", true]' non è una stringa Haskell valida, in quanto non ha un tipo semplice. –
@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
Non so perché questa domanda è stata chiusa. È una domanda eccellente perché non è trattata nella documentazione. – user239558