SORU
26 Aralık 2011, PAZARTESİ


/Değişir İthalat kullanmaya ne zaman daha iyi bir açıklama

"Writing R Extensions" el ile İthalat ve kullanmak için aşağıdaki rehberlik sağlar ya da Değişir:

Genel kurallar vardır

  • Tek paket kütüphane kullanarak yüklemek için gerekli olan paketleri(pkgname) ‘İthalat’ alan ve içinde listelenmesi gerekir ‘Değişir’ alan.
  • Başarılı bir paket kütüphane kullanarak yüklemek için bağlı olması gereken paketleri(pkgname) belirtilmelidir ‘Bağlıdır’ alan, sadece.

Birisi bu konuda biraz daha clairty sağlayabilir? Nasıl benim paketi sadece ad yüklü ihtiyaçlarına karşı ne zaman eklenecek bir pakete ihtiyacım var. Hem örnekleri nelerdir? Tipik paketi sadece bazen diğer paketlerde işlevleri çağrı işlevleri bir koleksiyon eserin bazı bit zaten kodlanmıştır) olduğunu düşünüyorum. Bu senaryo 1 ya da 2 yukarıda.

Edit

Bir bu belirli konu üzerinde bir bölüm ile blog post yazdı (arama İthalatı v' Bağlıdır). Görsellik çok daha kolay anlamak için yapmak.

CEVAP
26 Aralık 2011, PAZARTESİ


"Imports" "Depends" (ve de bir paket bir 'iyi vatandaş' o "Depends" kullanın diğer paketler için saygı ile). kullanarak yapar daha güvenli

* *3 Yönerge, başka bir paketten bir işlevi ana arama yolu (ortamlar search() tarafından döndürülen listesi vb.) diğer paketi takılarak kullanılabilir olduğundan emin olmak için çalışır. Bu strateji, ancak, eğer başka bir paket, daha sonra yüklü, aynı adlı bir işlev arama yolunda önceki yerler olursa bunun önüne geçilebilir. Chambers (in SoDA) fonksiyonu örnek kullanır gam ve 7* *paketleri de bulunan "gam",. Eğer diğer iki paketleri yüklenmiş, onlara bağlı olarak gam ve bir bağlı mgcv, işlevi buldu aramalar için gam() ki bağlı sırayla olan bu iki paket vardı ekli. İyi değil.

"Imports" Yönerge <imports:packageName> alınan paket (hemen <namespace:packageName> sonra aradı), normal arama yolu üzerindeki yerine yerleştirir. Eğer örnekte paketlerden biri de yukarıda "Imports" kullanılan mekanizma, önemli iki şekilde geliştirilmiş olacaktır. (1) paket üzerinde mgcv kontrol sahibi olur kendisi işlevi kullanılır. (2) ana arama yolunda alınan nesneler açık tutarak, hatta potansiyel olarak mgcv Diğer işlevi başka bir paketin bağımlılığı kırmak olmaz.

Bu ad kullanarak şimdi "Imports" "Depends" kullanarak daha güvenli neden HUYSUZ, ve (özellikle) tarafından zorlanır neden bu kadar iyi bir uygulama olmasıdır.


Düzenlenmiş önemli bir uyarı eklemek için:

Varbirne yazık ki yaygın bir durum için yukarıdaki öneriler: eğer paket temel paket A kendisi "Depends" bir paket B, paketiniz olacak daha ekle A "Depends Yönerge.

Bu olduğu içinpaket fonksiyonları A beklenti ile yazılmış bir paket B ve fonksiyonları search() yol bağlı olacaktır.

"Depends" Yönerge yüklemek ve eklemek paket A, hangi noktada paket A'ın kendi "Depends" Direktif olacak, bir zincir reaksiyonu neden paket B olmak yüklü ve bağlı olarak. 32 ** paket görev yapan güveniyor B paket fonksiyonları bulmak mümkün olacak.

"Imports" bir Direktif yük olacak amadeğilA takın ve paketi olacakikisi de değilyükne depaketi B Ekle. ("Imports" sonuçta, beklediği paketi yazarlar kullanarak ad mekanizması, ve o paketi A kullanıyor olacak "Imports" işaret etmek için herhangi bir fonksiyonları B Bu giriş için.) B sonuç olarak başarısız olur paket fonksiyonları kullanan A paket herhangi bir fonksiyon için işlevleri çağırır.

Sadece iki çözüm de vardır:

  1. Paketiniz A "Depends" bir yönerge kullanarak paketi takın.
  2. Daha uzun vadede, paket sürdürücü A iletişim ve onlara ad (this related answer Martin Morgan sözleriyle) inşa daha dikkatli bir iş yapmak istiyoruz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:
R

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bennythecoder

    Bennythecode

    25 Mart 2008
  • Hallucination Land

    Hallucinatio

    14 Ocak 2011
  • The Exploiteers

    The Exploite

    4 Ocak 2011