2012-03-27 13 views
18

ho letto due post recenti che discutono dipende e importazioniImportazioni ed Dipende

Ma ho quattro persistenti, le questioni relative:

  1. Supponiamo che voglio che due pacchetti siano disponibili anche all'utente finale quando essi oad nel mio pacchetto. C'è una buona ragione per non usare Depends in questo contesto? (Il punto qui è caricare tutti e tre i pacchetti tramite un comando che carica solo un pacchetto.)

  2. Va bene specificare un pacchetto in entrambi i campi Depends e Imports?

  3. Se un pacchetto è elencato in Depends, esiste un punto per elencarlo anche nelle importazioni? O i benefici delle importazioni sono già stati annullati utilizzando Depends?

  4. È il seguente corretto? Un pacchetto dovrebbe essere elencato nel campo Imports del file DESCRIPTION se e solo se il pacchetto è importato (in tutto o in parte) nel file NAMESPACE.

Grazie mille!

David

+1

molto legati: http://stackoverflow.com/q/8637993/602276 – Andrie

+1

Ora vedo - che hai fatto in realtà link per i 2 post precedenti, ma che non era molto evidente. Ho modificato la tua domanda per renderla più esplicita. Bella domanda, a proposito. +1 – Andrie

risposta

11

paio di punti, e devo ammettere che anche io trovo confuso, a volte. Ma l'ho rivisitato di recente, ed ecco la mia versione:

  1. "Depends" è come eravamo soliti fare le cose; è il più vicino a "caricare tutti e tre": quando il terzo dipende dagli altri due, tutti e tre verranno caricati.

  2. Con Namespace, possiamo anche importare. Ciò porta solo i simboli dichiarati, che possono essere dati o funzioni. Lo uso a volte; non caricherà l'altro pacchetto da cui si importa, ma renderà disponibili i simboli indicati. In quanto tale, è "più leggero" di Depends.

  3. Se si utilizza Depends, non è necessario importare.

  4. Ciò è corretto: se si utilizzano dichiarazioni in NAMESPACE per importare simboli da altri pacchetti, quell'altro pacchetto deve essere elencato in Import: nel file DESCRIPTION.

+1

Bella risposta.In aggiunta a questo, la mia opinione è che "Imports" è più sicuro di "Depends". È molto probabile che utilizzi la terminologia sbagliata qui, ma se si "Importa", i pacchetti importati risiedono in uno "stack" che è "interno" allo spazio dei nomi del pacchetto di importazione. Ciò protegge dallo scenario in cui altri pacchetti caricati successivamente maschicano le funzioni. Se questa descrizione vaga è lontanamente accurata, puoi aggiungere una descrizione appropriata nella tua risposta? – Andrie

+0

Penso di sapere cosa intendi, ma non posso esprimerlo in un modo in cui sono contento.Ma il tuo punto principale è buono: "Import" è più fine e meno probabile che abbia effetti collaterali. –

+0

Ahah, sapevo che c'era una domanda e una risposta simili di recente. @ josho'brien per il salvataggio in http://stackoverflow.com/a/8638902/602276 – Andrie

Problemi correlati