2016-03-27 13 views
0

benim kapatılmasını koymak için sürekli çalışmak oluştururken: o dönüş deyiminde deniyor kadar İç içe geçmiş bir işlevde ilk olarak ne çalıştırılır?

let incrementByTen = makeIncrementer(forIncrement: 10) 

o) ARTIRICI (atlamak mı, return ifadesi ARTIRICI çalıştırabilirsiniz bu şekilde() sonunda işlev ve değerini alıyorsunuz? İşlev çağrıldığında bir işlevin argümanları değerlendirilir.

cevap

0

Bu durumda, makeIncrementer çağrıldığında, argüman (bu durumda 10), aslında makeIncrementer çağrılmadan önce değerlendirilecektir. makeIncrementer çağrıldığında

Benzer bir şekilde, bu kod runningTotal başlatma ve bundan sonra arttırılır iade, bu yüzden daha önce değerlendirilmiştir Bu noktada amount olduğuna da dikkat edilmelidir (incrementer başlatırken, sırayla çalıştırılır, öyle her zaman 10

olduğu görüşme öncesinde değerlendirilecek hiçbir geçmek argümanları ve hiçbir şey vardır incrementByTen() Eğer kapatma yürütme parçası olarak, çağırmak zaman

Ardından, RunningTotal bir daima 10.

+0

Bu işlevin, runningTotal öğesine ve miktarına bir başvuru yakaladığını okudum. Kavramanın zorluğu, art arda art arda artımByTen() 'i çağırdığımda, sürekli artarak devam etmesidir. –

0

, bu durumda, tutar artırılır Yorumunuzu şu soru ile genişletdiniz:

Bu işlevin, runningTotal ve miktarına bir başvuru yakaladığını okudum. Kavramanın zorluğu, art arda art arda artımByTen() 'i çağırdığımda, sürekli artarak devam etmesidir.

fonksiyonu incrementerdeğeri amount arasında ve değişkenrunningTotal yakalar. Bir değeri yakalamak, değeri işlev değerine (kapanışı) içine kopyalamayı içerir. Yakalama

değişken fazla yer almaktadır: Yerel bir değişken runningTotal 'ın ömrü genellikle sadece tarafından oluşturulan işlev çağırma sonuna kadar en fazla uzanacak şekilde - yani makeIncrementer bir çağrı yeni bir yerel runningTotal yaratacak ve bu çağrı döndüğünde değişken bozulur. runningTotal gibi, incrementer tarafından bir değişken olarak yakalanır, daha sonra ömrü incrementer'un gerektirdiği sürece otomatik olarak uzatılır, bu süre incrementer'un kendisi kadar gereklidir. incrementer, makeIncrementer tarafından döndürülen değerdir, runningTotal'un ömrü, aramanın ömrünü makeIncrementer'a kadar uzatır.

o 10 ile artırılır ve mevcut değer geri çağrı bu değişken runningTotal zorlamaktadır olarak makeIncrementer bir tek çağrı tarafından döndürülen işlev çağrılır sonra her zaman.iki kez makeIncrementer arayıp iki sonucu saklıyorsanız

sonra her sonuç ayrı işlev başvuran ve bu fonksiyonların her biri bir ayrı değişkeni başvuran - böylece iki ayrı artırım yapılması sayaçlarını var.

HTH

İlgili konular