Episode ini membahas sintaks dasar Ruby: variabel dan konstanta dengan aturan penamaannya, tipe data Integer, Float, String, Symbol, Array, Hash, dan Range, komentar, output dengan p dan puts, string interpolation, serta perbedaan simbol dan string.

Sekarang kalian mulai menyentuh hal yang sesungguhnya: sintaks dasar dan tipe data Ruby. Materi ini adalah kosakata bahasa Ruby — variabel, konstanta, angka, string, simbol, array, hash, dan rentang. Semua episode berikutnya dibangun di atas pemahaman ini, jadi pastikan setiap konsep benar-benar dikuasai sebelum melompat.
Salah satu daya tarik Ruby adalah sintaks yang terasa seperti bahasa alami. Kalian tidak akan menemukan titik koma wajib atau kurung kurawal untuk block. Sebaliknya, ada aturan penamaan yang mengandung makna (prefix seperti @ dan $), serta beberapa cara mencetak output yang masing-masing punya peran berbeda.
Episode 3 ini membedah variabel dan konstanta beserta aturannya, seluruh tipe data dasar, komentar dan fungsi output p/puts/print, serta perbandingan mendalam antara simbol dan string — dua konsep yang sering membingungkan pemula.
Ruby mengenal empat lingkup variabel yang dibedakan dari prefix penamaannya:
nama = "Ruby" # lokal
@nama_instans = "Ruby" # instance (per objek)
@@jumlah_total = 0 # class (dibagi seluruh kelas)
$versi_global = "4.0" # global (dibagi seluruh program)Variabel lokal (nama) hanya hidup di lingkup tempat ia didefinisikan. Variabel instance (@nama_instans) melekat pada satu objek dan akan dibahas detail di episode 6. Variabel class (@@jumlah_total) dibagi oleh seluruh objek satu kelas, sementara variabel global ($versi_global) bisa diakses dari mana saja — dan karena itu sering dihindari karena rawan konflik.
Konstanta diawali huruf kapital dan ditulis dalam bentuk NAMA_BESAR. Ruby akan memperingatkan jika konstanta diubah nilainya:
BAHASA = "Ruby"
puts BAHASAPerbedaan praktisnya: coba ubah BAHASA dengan nilai baru — Ruby mengeluarkan peringatan, bukan error, karena konstanta di Ruby sebenarnya bisa diubah meski tidak disarankan. Nama method yang berakhir tanda tanya (seperti nil?) mengembalikan boolean, dan nama dengan tanda seru (seperti gsub!) menandakan method mutasi pada objek aslinya. Konvensi ini penting untuk membaca kode Ruby dengan cepat.
Ruby menyediakan Integer untuk bilangan bulat, Float untuk bilangan desimal, dan String untuk teks. Perhatikan bahwa di Ruby, angka bulat dan desimal adalah tipe berbeda dengan method berbeda:
umur = 30
harga = 19.99
puts umur.class
puts harga.classumur.class menampilkan Integer dan harga.class menampilkan Float. Operasi pembagian integer dibulatkan ke bawah (misalnya 7 / 2 menghasilkan 3), jadi gunakan float jika ingin hasil desimal. String dibuat dengan tanda kutip tunggal atau ganda — perbedaannya akan kita lihat di bagian interpolasi.
Selain angka dan string, ada empat tipe koleksi yang akan sangat sering kalian pakai:
:nama) — string ringan yang identitasnya dibandingkan, bukan isinya.[1, 2, 3]) — koleksi terurut berbasis index.{ kunci: "nilai" }) — pasangan key dan value.1..10) — rentang nilai dengan batas inklusif.simbol = :nama
daftar = [1, 2, 3]
hash = { bahasa: "Ruby", tahun: 1995 }
rentang = 1..10
puts hash[:bahasa]
puts rentang.cover?(5)Ekspresi hash[:bahasa] mengambil nilai dari key :bahasa, dan rentang.cover?(5) mengecek apakah 5 berada dalam rentang. Detail operasi koleksi ini dibahas menyeluruh di episode 10.
Ruby juga punya tiga nilai khusus: true, false, dan nil — yang mewakili ketiadaan nilai. Semuanya adalah objek, dan hanya nil serta false yang dianggap falsy dalam konteks boolean. Nilai lain seperti 0, "", atau array kosong tetap truthy. Aturan ini berbeda dengan beberapa bahasa lain, jadi ingat baik-baik: hanya nil dan false yang dianggap salah.
Ruby punya tiga cara mencetak output dengan perilaku berbeda. puts menambahkan baris baru, print tidak, dan p menampilkan representasi internal nilai — sangat berguna untuk debugging:
ruby -e 'puts "baris pertama"; p [1, 2, 3]'Command ruby -e mengeksekusi satu baris script tanpa membuat file. Dalam praktik harian, puts untuk output normal dan p untuk inspeksi nilai. Komentar di Ruby ditulis dengan # dan diabaikan interpreter:
# ini komentar satu baris
puts "Halo" # komentar di akhir barisKomentar tidak memengaruhi eksekusi, tapi sangat penting untuk dokumentasi. Sebagai catatan, di sinilah kode-kode contoh episode sebelumnya memakai puts untuk menampilkan hasil ke terminal.
String interpolation adalah cara menyisipkan hasil ekspresi ke dalam string. Fitur ini hanya aktif pada string kutip ganda atau string dengan %Q:
bahasa = "Ruby"
puts "Saya belajar #{bahasa} versi #{RUBY_VERSION}"
puts "Hasil penjumlahan: #{2 + 3}"String kutip tunggal seperti '#{bahasa}' akan mencetak literal #{bahasa} tanpa di-interpolasi. puts "...#{bahasa}..." memperlihatkan cara kerja interpolasi yang mengevaluasi ekspresi di dalam tanda kurung kurawal ganda.
Simbol dan string terlihat mirip tetapi digunakan untuk tujuan berbeda. Simbol (:nama) adalah identifier yang dibandingkan berdasarkan identitas — tidak ada String#gsub pada simbol, dan simbol yang sama selalu merepresentasikan objek yang sama di seluruh program. String ("nama") adalah data yang bisa diubah-ubah.
puts :nama.equal?(:nama)
puts "nama".equal?("nama")Hasilnya true untuk simbol (objek yang sama) dan false untuk string (dua objek berbeda). Ekspresi :nama.equal?(:nama) memakai method equal? yang membandingkan identitas objek. Itulah mengapa simbol ideal untuk key hash, flag, dan nama method — ringan dan cepat dibandingkan.
Tip
Kebiasaan membaca yang penting: ketika kalian melihat kode seperti hash[:kunci], ingat bahwa :kunci adalah simbol, bukan string. Konsistensi key simbol vs string di sebuah hash sering menjadi sumber bug yang membingungkan.
Episode 3 memperkenalkan kosakata dasar Ruby: empat jenis variabel dengan aturan penamaan berbasis prefix, konstanta, tipe data Integer, Float, String, Symbol, Array, Hash, dan Range, aturan truthy yang hanya menganggap nil dan false sebagai salah, tiga cara output, serta perbedaan penting antara simbol dan string.
Inti yang harus dibawa pulang:
@, class dengan @@, global dengan $.nil dan false yang falsy; semua nilai lain truthy termasuk nol dan string kosong.puts menambah baris baru, p menampilkan representasi internal untuk debugging.#{}.Di episode 4 selanjutnya kita akan membahas control flow dan operator — percabangan if, unless, ternary, dan case, perulangan while, until, loop, dan iterator each, operator short-circuit && dan ||, hingga operator spaceship <=> yang unik di Ruby. Sintaks dasar yang sudah kalian kuasai akan mulai membentuk logika program.