Metode adalah blok kode yang bisa dipanggil berulang kali. Tanpa metode, Anda harus copy-paste kode yang sama di mana-mana. Dengan metode, cukup definisi sekali, panggil kapan saja.
1. Metode Dasar
Definisi Metode
def sapa
puts "Halo, selamat datang!"
end
Panggil Metode
sapa # Output: Halo, selamat datang!
def menandai awal metode, end menandai akhir. Panggil dengan nama metode tanpa def.
2. Parameter — Input ke Metode
def sapa(nama)
puts "Halo, #{nama}!"
end
sapa("Andika") # Output: Halo, Andika!
sapa("Budi") # Output: Halo, Budi!
Multiple Parameters
def tambah(a, b)
puts a + b
end
tambah(10, 5) # Output: 15
3. Return Value — Output dari Metode
Ruby otomatis return nilai terakhir di dalam metode:
def tambah(a, b)
a + b
end
hasil = tambah(10, 5)
puts hasil # 15
Anda juga bisa pakai return eksplisit:
def tambah(a, b)
return a + b
end
Tips: Pakai return hanya kalau butuh return awal. Biasanya cukup nilai terakhir.
4. Default Arguments
def sapa(nama, greeting = "Halo")
puts "#{greeting}, #{nama}!"
end
sapa("Andika") # Halo, Andika!
sapa("Andika", "Selamat pagi") # Selamat pagi, Andika!
Parameter kedua punya default "Halo". Kalau tidak dikirim, pakai default.
5. Keyword Arguments
def buat_user(nama:, email:, umur: 25)
puts "Nama: #{nama}"
puts "Email: #{email}"
puts "Umur: #{umur}"
end
buat_user(nama: "Andika", email: "[email protected]")
# Nama: Andika
# Email: [email protected]
# Umur: 25
buat_user(nama: "Budi", email: "[email protected]", umur: 30)
# Nama: Budi
# Email: [email protected]
# Umur: 30
Lebih eksplisit — parameter harus disebut namanya.
6. Variable-length Arguments
Splat Operator (*)
def jumlahkan(*angka)
angka.sum
end
puts jumlahkan(1, 2, 3, 4, 5) # 15
*angka menangkap semua argumen jadi array.
Gabungan
def buat_pesanan(nama, *items)
puts "Pesanan untuk #{nama}:"
items.each { |item| puts "- #{item}" }
end
buat_pesanan("Andika", "Nasi", "Ayam", "Teh")
# Pesanan untuk Andika:
# - Nasi
# - Ayam
# - Teh
7. Metode sebagai Object
Di Ruby, metode adalah objek. Anda bisa simpan dalam variabel:
def kuadrat(n)
n ** 2
end
# Simpan metode dalam variabel
method = method(:kuadrat)
puts method.call(5) # 25
8. Scope & Accessors
Local Variable
def test
variabel = "lokal"
puts variabel
end
test # lokal
# puts variabel # Error! variabel tidak dikenal di luar metode
Instance Variable
class User
def initialize(nama)
@nama = nama
end
def tampilkan
puts "Nama: #{@nama}"
end
end
user = User.new("Andika")
user.tampilkan # Nama: Andika
9. Best Practices
# ✅ Gunakan snake_case untuk nama metode
def hitung_total
end
# ❌ Jangan pakai camelCase
def hitungTotal
end
# ✅ Nama metode harus jelas
def kirim_email(penerima, subjek, isi)
end
# ❌ Jangan ambigu
def proses(a, b, c)
end
# ✅ Panjang metode ideal: < 20 baris
def metode_pendek
# lakukan sesuatu
end
10. Ringkasan
| Konsep | Contoh | Keterangan |
|---|---|---|
| Definisi | def nama ... end |
Membuat metode |
| Parameter | def sapa(nama) |
Input |
| Default | def sapa(nama = "User") |
Nilai default |
| Keyword | def test(nama:) |
Named parameter |
| Return | Nilai terakhir / return |
Output |
| Splat | def test(*args) |
Variable args |
| Panggil | nama_metode(args) |
Eksekusi |
Penutup
Metode membuat kode lebih terorganisir dan reusable. Daripada menulis kode yang sama berkali-kali, cukup buat metode dan panggil sesuai kebutuhan.
Di artikel selanjutnya, kita akan bahas Blok, Procs, dan Lambdas — konsep powerful yang memungkinkan Anda memperlakukan kode sebagai objek.