Apa Arti DO di Ruby?

Ruby adalah bahasa pemrograman luar biasa yang dikemas dengan fitur dan alat cararn untuk sebagian besar lingkungan pengembangan. Ruby memiliki satu fitur hebat yang sering diabaikan:blocks.

Inti dari artikel ini adalah untuk membahas dan memahami apa itu blok Ruby, bagaimana cara kerjanya, dan bagaimana kami dapat menggunakannya dalam program Ruby kami.

Kami akan mulai dengan sintaks dasar dan kemudian membahas fitur-fitur seperti hasil, yang dapat mengintimidasi user Ruby baru.

Apa itu Blok Ruby?

Seperti halnya dalam bahasa pemrograman lain, blok atau penutupan adalah fungsi anonim yang Anda sertakan di dalam kata kunci do dan end untuk blok inline.

Blok memungkinkan Anda untuk mengelompokkan blok kode ke dalam komponen terpisah yang dapat Anda lewati selama pemanggilan metode sebagai parameter.

Ada dua cara untuk mendefinisikan sebuah blok di Ruby: Yang pertama adalah menggunakan kata kunci do..end, yang lain menggunakan sepasang kurung kurawal.

Blok do..end terutama digunakan saat mendefinisikan blok kode yang mencakup beberapa baris, sedangkan kurung kurawal {} digunakan saat mendefinisikan blok kode yang merentang satu baris.

Anda meneruskan argumen blok di antara sepasang karakter pipa | |

PETUNJUK : Apakah Anda menggunakan satu baris atau blok multi-baris, fungsinya tidak berubah. Namun, untuk tujuan keterbacaan, gunakan kurung kurawal untuk satu blok baris dan do-end untuk blok multi-baris.

Contoh Dasar

Berikut ini adalah dua contoh sederhana dari blok Ruby, satu menggunakan kurung kurawal sementara yang lain menggunakan do..end.

# single line - {}
['Java', 'C', 'C++'].each { |i| puts i}

# multi-line -> do..end
['Java', 'C', 'C++'].each do |i|
puts i
end

Kedua contoh di atas menghasilkan hasil yang serupa:

  • Java
  • C
  • C++

Contoh di atas menerapkan blok ruby ​​​​dalam bentuk paling sederhana: kami melewati blok di setiap metode objek array. Lewati argumen blok di dalam sepasang karakter pipa; dalam contoh di atas, argumennya adalah i. Terakhir, kami menampilkan fungsionalitas blok di dalam badan blok (dalam contoh ini, put).

Memahami Kata Kunci Hasil Ruby

Anda dapat menggunakan blok Ruby di dalam metode standar. Fungsionalitas untuk melakukan tindakan itu adalah milik kata kunci hasil.

Mari kita bahas kata kunci hasil secara rinci.

Apa itu Hasil di Ruby?

Hasil kata kunci di Ruby memungkinkan Anda untuk memanggil blok yang ditentukan di dalam metode Ruby.

Bagaimana itu bekerja

Mari kita pertimbangkan contoh yang akan membantu kita memahami cara kerja kata kunci hasil. Pertimbangkan metode Ruby sederhana yang ditunjukkan di bawah ini:

def hello
puts "Hello!"
end

Contoh di atas adalah metode Ruby sederhana yang mencetak “Halo!”.

Jika kita ingin menambahkan lebih banyak fleksibilitas ke program, kita dapat mengizinkan user untuk memberikan argumen selama pemanggilan metode.

Oleh karena itu, kita dapat mengkodekan metode sebagai:

def hello(name)
puts "Hello, " + name
end
hello("USA")

Pada contoh kedua, kami memiliki sedikit fleksibilitas karena kami dapat meneruskan nama apa pun ke metode sebagai argumen.

Kita dapat memperluas ini lebih jauh lagi dengan menggunakan blok Ruby. Ketika kita melewati blok di dalam metode, itu akan dieksekusi dan mengembalikan hasilnya.

Definisi Metode Hasil

Untuk membuat metode yang menerima blok, kami menggunakan kata kunci hasil. Sintaks umumnya seperti yang ditunjukkan:

def hello
yield
end

Setelah definisi, kita dapat memanggil metode dan melewatkan satu blok kode. Metode akan mengeksekusi kode dan mengembalikan hasilnya.

Melewati Blok Ruby ke Metode

Kita dapat melewatkan sebuah blok ke metode menggunakan sintaks blok. Sebagai contoh, kita dapat memanggil metode di atas dengan sintaks sebagai:

hello {puts "Hello world" }

Selama metode tersebut berisi kata kunci hasil, Anda dapat melewati blok kode apa pun dan menjalankannya.

CATATAN : Setelah Anda menentukan kata kunci hasil di dalam suatu metode, Anda HARUS melewati blok saat memanggil metode tersebut. Jika tidak, Anda akan mendapatkan error “tidak ada blok yang diberikan (hasil)”.

Contoh 2

Mari kita ambil contoh lain:

def hello
puts "before yield."
yield
puts "after yield."
end
hello {puts "I yield"}

Contoh di atas mengilustrasikan bagaimana eksekusi metode menggunakan hasil bekerja. Keluaran program di bawah ini:

before yield
I am yield
after yield

Argumen Blok Ruby

Ruby memungkinkan Anda untuk meneruskan argumen ke blok Ruby. Argumen blok didefinisikan dalam blok hasil dan berfungsi sebagai parameter blok.

Urutan di mana Anda meneruskan argumen sangat penting karena blok akan menerimanya dalam urutan yang ditetapkan.

def hello
yield("John Doe", 20)
end
hello { |name, age| puts "Hello #{name}, you are #{age} years old"}

Parameter yang didefinisikan di dalam blok memiliki cakupan lokal dan hanya tersedia dalam konteks blok.

Karenanya, Anda akan mendapatkan variabel tidak terdefinisi yang digunakan di luar cakupan blok.

Contoh 3

Fungsionalitas blok tidak berubah pada blok satu baris atau multi-baris. Kita dapat mengilustrasikannya dengan menggunakan contoh di bawah ini:

def area
yield(7)
end
area do
puts "area of the cirle is #{7 * 3.14159}cm2"
end

Output dari contoh di atas adalah:

area of the cirle is 21.99113cm2

Ini menunjukkan bahwa baik blok multi-baris atau satu baris, fungsinya tetap sama.

Blok Eksplisit

Pada contoh sebelumnya, kita telah mendefinisikan blok sebagai implisit. Namun, kami juga dapat menggambarkannya sebagai eksplisit.

Blok eksplisit berarti kami menetapkan nama ke daftar parameter metode.

def example(&block)
block.call
end
example {puts "Explicit block example" }

Anda melewati nama blok di dalam setelah ampersand. Dengan menggunakan nama blok, Anda dapat meneruskan blok yang disimpan ke metode lain.

Penanganan Error Blok

Di bagian sebelumnya, kami menyebutkan bahwa blok hasil adalah wajib. Namun, Anda dapat menerapkan logika penanganan error sederhana jika hasil disediakan. Kami melakukan ini dengan menggunakan block_given? Metode kernel.

Metode mengembalikan nilai Boolean true jika hasil tersedia dan false jika sebaliknya.

Perhatikan contoh sederhana di bawah ini:

def hello
if block_given?
yield
else
puts "Nothing happened...[ERROR]"
end
end

Jika kita memanggil metode dengan nilai hasil yang diperlukan, outputnya adalah:

hello {puts "Hello there!"}
Hello there!

Di sisi lain, memanggil metode tanpa hasil akan mengeksekusi blok else sebagai:

hello
Nothing happened...[ERROR]

Menggunakan nilai dari block_given? metode, Anda dapat menerapkan logika penanganan error ketika tidak ada nilai hasil.

Kesimpulan

Dalam panduan ini, kami membahas blok Ruby, apa itu, bagaimana cara kerjanya, dan bagaimana menggunakannya dalam proyek Anda.

Terima kasih telah membaca!

Related Posts