Kapanımlar ve Kapsam
Değişkenleri yakalama
Kapanımlar ve Kapsam, CoddyKit'te ücretsiz bir Ruby Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Ruby Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Ruby Academy kursu toplamda 4 dersten oluşur.
Değişkenleri Yakalama
Kapanım, tanımlandığı yerdeki değişkenleri, o yerin çalışması sona erdikten sonra bile hatırlayan bir işlevdir. Proc nesneleri ve lambdalar kapanımdır.
name = "Ada"
greeter = -> { puts "Hello, #{name}" }
greeter.callDeğişken Birlikte Taşınır
Kapanım değeri kopyalamaz; değişkene canlı bir başvuru tutar. Değişkeni daha sonra değiştirirseniz kapanım yeni değeri görür.
count = 0
reader = -> { count }
count = 5
puts reader.callKapanımlar Değişiklik Yapabilir
Başvuru canlı olduğu için kapanım, yakalanan değişkeni değiştirebilir.
total = 0
adder = ->(n) { total += n }
adder.call(3)
adder.call(7)
puts totalÇevreleyen Metottan Sonra da Yaşama
Yakalanan değişken, onu oluşturan metot döndükten sonra bile kapanım var olduğu sürece yaşamaya devam eder.
def counter
n = 0
-> { n += 1 }
end
c = counter
puts c.call
puts c.call
puts c.callBağımsız Durumlar
Üretici metoda yapılan her çağrı yeni bir değişken oluşturur; bu nedenle ayrı kapanımlar ayrı durumları korur.
def counter
n = 0
-> { n += 1 }
end
a = counter
b = counter
puts a.call
puts a.call
puts b.callBlok Parametreleri Yereldir
Boru işaretleri arasında bildirilen parametreler bloğa özeldir ve dışarı sızmaz; aynı adlı bir değişken mevcut olsa bile bu durum değişmez.
x = 100
[1, 2, 3].each { |x| }
puts x # still 100Blok Yerel Değişkenleri
Değişkenleri blokla sınırlamak ve dışarıdaki değişkenleri yanlışlıkla değişime karşı korumak için boru işaretleri arasındaki noktalı virgülden sonra ek adlar listeleyin.
y = "outer"
[1].each { |i; y| y = "inner" }
puts y # unchangedYapılandırılabilir İşlevler Oluşturma
Kapanımlar, yapılandırmayı bir kez bir işleve yerleştirip bu işlevi birçok kez yeniden kullanmanızı sağlar.
def power_of(exp)
->(base) { base ** exp }
end
square = power_of(2)
cube = power_of(3)
puts square.call(5)
puts cube.call(2)Yinelemede Kapanımlar
Yaygın bir tuzak şudur: Döngü içinde oluşturulan kapanım bir anlık görüntüyü değil, değişkeni yakalar. Her yinelemede kapanım oluşturmak, her değerin ayrı ayrı yakalanmasını sağlar.
funcs = [1, 2, 3].map { |i| -> { i } }
puts funcs.map(&:call).inspectÖzel Durumu Kapsülleme
Kapanımlar durumu işlevlerin arkasına gizleyebilir; bu, nesnelerin ilk biçimlerinden biridir. Burada bakiye, döndürülen lambdalar dışında hiçbir yoldan erişilemez.
def make_account(start)
balance = start
deposit = ->(n) { balance += n }
show = -> { balance }
[deposit, show]
end
dep, show = make_account(100)
dep.call(50)
puts show.callHepsini Bir Araya Getirme
Kapanımlar kodu doğduğu yere bağlar:
- Çevredeki değişkenlere canlı başvurular yakalar.
- Durum, çevreleyen metot döndükten sonra da varlığını sürdürür.
- Her kapanım kendi bağımsız değişkenlerini korur.
def tagger(prefix)
->(text) { "[#{prefix}] #{text}" }
end
warn = tagger("WARN")
puts warn.call("low disk space")Hızlı Kontrol
Kapanımlarla ilgili anlayışınızı test edin.
Özet
Kapanımları ve kapsamı öğrendiniz:
- Proc nesneleri ve lambdalar, çevredeki değişkenleri başvuru yoluyla yakalar.
- Yakalanan durum, çevreleyen metottan daha uzun yaşar.
- Her kapanım bağımsız bir durum tutar.
- Blok parametreleri yerel kalır; blok yerel değişkenleri için
;kullanın.
def stepper(by)
pos = 0
-> { pos += by }
end
s = stepper(5)
puts s.call
puts s.callSıkça Sorulan Sorular
“Kapanımlar ve Kapsam” dersi ücretsiz mi?
Evet — “Kapanımlar ve Kapsam” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Ruby Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Ruby Academy kursu toplamda 4 dersten oluşur.
“Kapanımlar ve Kapsam” dersinde ne öğreneceğim?
Değişkenleri yakalama Ruby Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Ruby Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Ruby Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Kapanımlar ve Kapsam” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Ruby Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Ruby Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Blokların Özeti
- Proc'lar
- Lambda'lar
- Kapanımlar ve Kapsam