SORU
13 NİSAN 2010, Salı


Nasıl kullanılır " musunuz;<< -&; (uygulama kapsamı) R mi?"

Ben sadece ** 16 yaşında, okumayı yeni bitirdim ve çok merak <<- atama.

Manuel çok ilginç bir örnek gösterdi "&;< lt; -" anladım ben hissediyorum. Hala özlüyorum ne bu yararlı olabilir zaman çerçevesinde.

Senden okumak isterdim ne örnekler (veya örnekler için bağlantılar) < kullandığınızda vardır;<- yararlı/. ilginç olabilir Ne (gevşek izlemek için kolay görünüyor) kullanarak tehlikeleri olabilir, ve herhangi bir ipucu paylaşım gibi hissedebilirsiniz.

Teşekkürler.

CEVAP
13 NİSAN 2010, Salı


<<- durumu korumak için kapanması ile birlikte en çok yararlıdır. İşte benim son bir kağıt dan bir bölüm

Bir kapatma fonksiyonu başka bir fonksiyon tarafından yazılmıştır. Kilitler bu yüzden onlar çünkü deniralınüst ortam işlevi ve bu işlev tüm değişkenleri ve parametreleri erişebilirsiniz. Bu bize parametrelerin iki seviye için izin verir, çünkü yararlıdır. Parametreleri (üst) düzey işlevi nasıl çalıştığını kontrol eder. Diğer seviye (çocuk). Aşağıdaki örnekte, bu fikir güç fonksiyonları bir aile oluşturmak için nasıl kullanabileceğinizi gösterir. Ana fonksiyon (power) aslında çok güçlü bir alt işlevlerde (square cube) oluşturur.

power <- function(exponent) {
  function(x) x ^ exponent
}

square <- power(2)
square(2) # -> [1] 4
square(4) # -> [1] 16

cube <- power(3)
cube(2) # -> [1] 8
cube(4) # -> [1] 64

İki seviyede değişkenleri yönetme yeteneği aynı zamanda bir işlev üst ortam değişkenleri değiştirmek için izin vererek işlevi çağrısı arasında durumunu korumak için yapar. Farklı düzeylerde değişkenleri yönetmek için anahtardır çift ok atama operatörü <<-. Her zaman geçerli düzeyde çalışan her zamanki tek ok atama (<-) aksine, çift ok operatör üst düzeyde değişkenleri değiştirebilirsiniz.

Bu sayede aşağıdaki örnekte gösterildiği gibi bir işlevi çağrıldı nasıl kayıtları, bu bir karşı korumak için yapar. Her zaman new_counter çalıştırılan bir ortam oluşturur, bu ortamda i sayaç initialises ve sonra yeni bir işlev oluşturur.

new_counter <- function() {
  i <- 0
  function() {
    # do something useful, then ...
    i <<- i   1
    i
  }
}

Yeni işlev kapanışı ve çevresini kapsayan ortamdır. Bu kilitler counter_one counter_two çalıştırdığınızda, her birini çevreleyen ortamda sayacı değiştirir ve sonra da geçerli sayısını verir.

counter_one <- new_counter()
counter_two <- new_counter()

counter_one() # -> [1] 1
counter_one() # -> [1] 2
counter_two() # -> [1] 1

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • infiniTuts

    infiniTuts

    18 Ocak 2012
  • Stevie

    Stevie

    2 Mayıs 2010
  • TechBalance

    TechBalance

    12 HAZİRAN 2011