Proc'lar
Yeniden kullanılabilir blok nesneleri
Proc'lar, CoddyKit'te ücretsiz bir Ruby Academy dersidir. Bu, 4 dersinin 2. 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.
Yeniden Kullanılabilir Blok Nesneleri
Bir blok tek başına bir nesne değildir; bu nedenle onu bir değişkende saklayamazsınız. Bir proc, bloğu saklayabileceğiniz, aktarabileceğiniz ve daha sonra çağırabileceğiniz gerçek bir nesneye sarar.
greeter = Proc.new { puts "Hello!" }
greeter.call
greeter.callProc Nesneleri Oluşturma
Bir proc oluşturmanın iki yaygın yolu vardır: Proc.new { ... } ve daha kısa olan proc { ... } Kernel metodu. Her ikisi de aynı türde nesne üretir.
double = proc { |x| x * 2 }
p double.call(5)Bir Proc Nesnesini Çağırma
Bir proc nesnesini birkaç şekilde çağırabilirsiniz: .call, .() ve köşeli parantez kısaltması olan [ ]. Bu kullanımlar birbirine eşdeğerdir.
square = proc { |x| x * x }
puts square.call(4)
puts square.(4)
puts square[4]Proc Nesneleri Argüman Alır
Proc nesneleri, tıpkı bloklar gibi, boru işaretleri arasında bildirilen parametreleri kabul eder.
add = proc { |a, b| a + b }
puts add.call(3, 7)Dizilerde Proc Nesnelerini Saklama
Proc nesneleri de nesne olduğundan, davranışlardan oluşan bir koleksiyon tutabilir ve bunları sırayla çalıştırabilirsiniz.
ops = [proc { |x| x + 1 }, proc { |x| x * 2 }]
result = 5
ops.each { |op| result = op.call(result) }
puts resultBir Proc Nesnesini Blok Olarak Aktarma
Bir proc nesnesini & ile önekleyerek, blok bekleyen bir metoda aktarabilirsiniz. Ruby, onu yeniden blok biçimine açar.
printer = proc { |n| puts "Item: #{n}" }
[1, 2, 3].each(&printer)Blokları Proc Nesnesi Olarak Yakalama
Tersi de mümkündür: Bir metodun imzasındaki &block, verilen bloğu saklayabileceğiniz bir Proc olarak yakalar.
def make_handler(&block)
block
end
h = make_handler { |msg| puts "Got: #{msg}" }
h.call("ping")Proc Nesneleri Argüman Sayısına Karşı Esnektir
Önemli bir özellik şudur: Proc nesneleri yanlış sayıda argüman verilmesinden şikâyet etmez. Eksik argümanlar nil olur ve fazlalıklar yok sayılır.
p1 = proc { |a, b| puts "a=#{a.inspect} b=#{b.inspect}" }
p1.call(1)
p1.call(1, 2, 3)return ve Proc Nesneleri
Bir Proc içindeki return, yalnızca Proc nesnesinden değil, onu çevreleyen metottan döner. Bu durum şaşırtıcı olabilir; bu nedenle dikkatli olun.
def demo
p = proc { return 10 }
p.call
20 # never reached
end
puts demoProc Nesneleri Çevrelerini Yakalar
Bir proc nesnesi, tanımlandığı kapsamdaki değişkenleri hatırlar. Bu nedenle bir kapanımdır; bu konuyu ileride daha ayrıntılı inceleyeceğiz.
factor = 3
times_factor = proc { |n| n * factor }
puts times_factor.call(10)Hepsini Bir Araya Getirme
Proc nesneleri, blokları birinci sınıf nesnelere dönüştürür:
proc { }veyaProc.newile oluşturulur..call,.()veya[ ]ile çalıştırılır.&ile metotlara aktarılır.- Argüman sayısı konusunda esnektir ve metot düzeyindeki
returnifadesini kullanır.
pipeline = [proc { |s| s.upcase }, proc { |s| s + "!" }]
text = "hello"
pipeline.each { |step| text = step.call(text) }
puts textHızlı Kontrol
Proc nesneleriyle ilgili anlayışınızı test edin.
Özet
Proc nesnelerini öğrendiniz:
- Bir Proc, nesne olarak sarılmış bir bloktur.
proc/Proc.newile oluşturulur;.callile çalıştırılır.&kullanılarak metotlara aktarılır.- Argüman sayısı uyuşmazlıklarını tolere eder ve metot düzeyindeki
returnifadesini kullanır.
shout = proc { |word| puts word.upcase }
shout.call("ruby")Sıkça Sorulan Sorular
“Proc'lar” dersi ücretsiz mi?
Evet — “Proc'lar” 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.
“Proc'lar” dersinde ne öğreneceğim?
Yeniden kullanılabilir blok nesneleri 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 2. dersidir.
“Proc'lar” 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.