Ruby Academy · Pelajaran

Lambda

Procs dengan ariti ketat

Pelajaran 3 daripada 413 langkah

Lambda ialah pelajaran Ruby Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Ruby Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Ruby Academy merangkumi sejumlah 4 pelajaran.

Proc dengan Bilangan Argumen Ketat

Fungsi lambda ialah jenis Proc khas yang berkelakuan lebih seperti kaedah biasa: fungsi ini menyemak bilangan argumennya dan mengendalikan return seperti biasa. Gunakannya apabila anda mahukan tingkah laku yang boleh dijangka seperti kaedah.

square = lambda { |x| x * x }
puts square.call(6)

Fungsi Lambda Bertanda Anak Panah

Sintaks anak panah ->, yang digelar “lambda bertanda anak panah”, ialah cara paling biasa untuk menulis fungsi lambda. Parameter diletakkan dalam kurungan.

add = ->(a, b) { a + b }
puts add.call(4, 5)

Memanggil Fungsi Lambda

Fungsi lambda menyokong gaya panggilan yang sama seperti Proc: .call, .(), dan [ ].

triple = ->(x) { x * 3 }
puts triple.call(2)
puts triple.(2)
puts triple[2]

Penyemakan Argumen Ketat

Tidak seperti Proc, fungsi lambda menghasilkan ArgumentError jika anda memberikan bilangan argumen yang salah. Hal ini mengesan pepijat lebih awal.

greet = ->(name) { "Hi #{name}" }
puts greet.call("Sam")
begin
  greet.call
rescue ArgumentError => e
  puts "Error: #{e.message}"
end

Pemulangan Kekal Setempat

return di dalam fungsi lambda hanya keluar daripada fungsi lambda tersebut, kemudian pelaksanaan diteruskan. Ini sepadan dengan cara kaedah berkelakuan.

def demo
  l = -> { return 10 }
  l.call
  20  # this runs
end
puts demo

Menyemak Fungsi Lambda

Proc dan fungsi lambda kedua-duanya ialah tika Proc. Gunakan lambda? untuk membezakan kedua-duanya.

l = ->(x) { x }
pr = proc { |x| x }
puts l.lambda?
puts pr.lambda?

Fungsi Lambda tanpa Argumen

Gugurkan kurungan apabila fungsi lambda tidak menerima parameter.

now = -> { Time.now.year }
puts "Year: #{now.call}"

Fungsi Lambda Berbilang Baris

Fungsi lambda boleh merangkumi beberapa baris. Ungkapan terakhir ialah nilai yang dipulangkan.

classify = ->(n) {
  return "zero" if n.zero?
  n.positive? ? "positive" : "negative"
}
puts classify.call(0)
puts classify.call(-3)

Menghantar Fungsi Lambda kepada Kaedah

Seperti Proc, fungsi lambda boleh ditukarkan kepada blok dengan &, jadi fungsi lambda boleh digunakan dalam map, select, dan kaedah lain yang seumpamanya.

doubler = ->(n) { n * 2 }
p [1, 2, 3].map(&doubler)

Fungsi Lambda sebagai Nilai Pemulangan

Sesuatu kaedah boleh membina dan mengembalikan fungsi lambda, membolehkan anda mencipta fungsi khusus dengan segera.

def multiplier(by)
  ->(n) { n * by }
end
times10 = multiplier(10)
puts times10.call(5)

Menggabungkan Semuanya

Fungsi lambda ialah Proc yang ketat dan menyerupai kaedah:

  • Tulis dengan lambda { } atau ->(args) { }.
  • Fungsi ini menguatkuasakan bilangan argumen dan mengekalkan return secara setempat.
  • Gunakannya apabila ketepatan penting atau apabila anda membina fungsi untuk dikembalikan.
is_even = ->(n) { n.even? }
p [1, 2, 3, 4, 5, 6].select(&is_even)

Semakan Ringkas

Uji pemahaman anda tentang fungsi lambda.

Imbas Kembali

Anda telah mempelajari fungsi lambda:

  • Fungsi lambda ialah Proc yang ketat; tuliskannya sebagai ->.
  • Fungsi ini menguatkuasakan bilangan argumen.
  • return hanya keluar daripada fungsi lambda.
  • lambda? membezakannya daripada Proc biasa.
area = ->(w, h) { w * h }
puts area.call(3, 4)
Percuma untuk bermula

Pelajari Ruby dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
29
Pelajaran
109

Soalan Lazim

Adakah pelajaran “Lambda” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Ruby Academy, termasuk “Lambda”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Ruby Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Lambda”?

Procs dengan ariti ketat Anda berlatih Ruby Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Ruby Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Ruby Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “Lambda” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Ruby Academy ini?

Ya. Setiap pelajaran Ruby Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Ulang Kaji Blok
  2. Procs
  3. Lambda
  4. Closure dan Skop
← Kembali ke Ruby Academy