0Pricing
Ruby Academy · Ders

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.call

Proc 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 result

Bir 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 demo

Proc 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 { } veya Proc.new ile 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 return ifadesini kullanır.
pipeline = [proc { |s| s.upcase }, proc { |s| s + "!" }]
text = "hello"
pipeline.each { |step| text = step.call(text) }
puts text

Hızlı Kontrol

Proc nesneleriyle ilgili anlayışınızı test edin.

Özet

Proc nesnelerini öğrendiniz:

  • Bir Proc, nesne olarak sarılmış bir bloktur.
  • proc/Proc.new ile oluşturulur; .call ile ç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 return ifadesini 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.

Bu kursun tüm dersleri

  1. Blokların Özeti
  2. Proc'lar
  3. Lambda'lar
  4. Kapanımlar ve Kapsam
← Ruby Academy Sayfasına Dön