Manfaatkan Ruby secara maksimum dengan menggunakan kaedah .select .map dan .reduce bersama

Anda semestinya tidak pernah mengulangi diri anda semasa menulis kod. Dengan kata lain, jangan ulangi diri anda dua kali. Untuk menjadi jelas - jangan menulis sesuatu yang sudah dijelaskan.

Ini disebut tautologi, dan semasa menulis kod, ia harus dielakkan setiap saat. Sebagai contoh, bukankah lebih baik daripada membaca perenggan panjang ini jika saya hanya menggunakan tiga perkataan kuat "jangan, ulangi, diri sendiri"?

Itulah yang akan saya tunjukkan kepada anda bagaimana kaedah Ruby .select .map dan .reduce (atau .inject).

Contohnya

Anggaplah anda mencari kamus yang penuh dengan nama pekerja, tajuk pekerjaan dan gaji. Mari kita bayangkan bahawa anda ingin mengetahui jumlah perbelanjaan syarikat untuk gaji pemaju. Sekarang, tanpa menggunakan satu kaedah dalam Ruby, kemungkinan besar anda akan menuliskan kod anda seperti ini:

people = [ { first_name: "Gary", job_title: "car enthusiast", salary: "14000" }, { first_name: "Claire", job_title: "developer", salary: "15000" }, { first_name: "Clem", job_title: "developer", salary: "12000" } ] person1 = people[0][:job_title] person2 = people[1][:job_title] person3 = people[2][:job_title] total = 0 if person1 == "developer" total += people[0][:salary].to_i end if person2 == "developer" total += people[1][:salary].to_i end if person3 == "developer" total += people[2][:salary].to_i end puts total

Wow - itu banyak baris untuk ditulis untuk mencari hanya tiga orang. Bayangkan jika syarikat itu menggaji ratusan orang!

Sekarang jika anda tahu sedikit tentang gelung, maka langkah termudah seterusnya adalah menulis kaedah untuk menyatukan semua gaji. Ini mungkin hanya memerlukan lima atau enam baris tetapi periksa ini!

puts people.selectx.mapy.reduce(:+)

Anda akan perhatikan setiap kaedah bermula dan diakhiri dengan kurungan keriting. Ini boleh digunakan sebagai ganti perintah do and end jika blok satu baris.

{} == (do end) #for single-line blocks only

.pilih

Mari kita mulakan dengan kaedah .select. Kami membuat pemboleh ubah (x) dan mengulangi setiap kaedah dalam array orang. Ia kemudian memeriksa dengan ungkapan boolean jika kunci (: job_title) sama dengan rentetan "pengembang". Sekiranya boolean kembali benar, maka kaedah pilih meletakkan hash yang kembali benar menjadi objek baru.

peta

Kaedah peta digunakan untuk membuat array baru yang tidak mempengaruhi array yang dilancarkannya. Saya menggunakan kaedah ini untuk membuat pemboleh ubah baru (y), dan kemudian menggunakan pemboleh ubah tersebut untuk merebut nilai kunci (: gaji). Kemudian, akhirnya, saya mengubah nilai dari rentetan menjadi bilangan bulat.

.Mengurangkan

Yang ini mungkin kelihatan paling membingungkan jadi mari kita kembangkannya sedikit.

.reduce(0) sum + indv #is the same as .reduce(:+)

Kaedah mengurangkan mencipta pemboleh ubah baru yang anda tetapkan nilainya sama dengan tanda kurung pertama (0). Anda kemudian membuat dua nilai baru (jumlah dan indv) yang mana satu adalah jumlah yang anda tambah gaji individu.

Saya harap ia dapat menerangkannya dengan baik! Beritahu saya jika anda mempunyai sebarang pertanyaan.