Setelah kenal IRB, saatnya memahami tipe data dalam Ruby. Tipe data itu jenis-jenis nilai yang bisa disimpan dalam variabel — angka, teks, daftar, dan lainnya.
1. Integer — Bilangan Bulat
Integer bilangan tanpa desimal: positif, negatif, atau nol.
umur = 25
harga = 150000
suhu = -5
puts umur # 25
puts harga # 150000
puts suhu # -5
Ruby juga mengenali underscore sebagai pemisah ribuan:
populasi = 1_000_000
puts populasi # 1000000
Operasi Integer
puts 10 + 3 # 13 (penjumlahan)
puts 10 - 3 # 7 (pengurangan)
puts 10 * 3 # 30 (perkalian)
puts 10 / 3 # 3 (pembagian bulat)
puts 10 % 3 # 1 (modulus/sisa bagi)
puts 10 ** 3 # 1000 (pangkat)
Perhatikan: 10 / 3 hasilnya 3, bukan 3.33. Ini pembagian integer.
2. Float — Bilangan Desimal
Float adalah bilangan berkoma (desimal).
tinggi = 175.5
harga = 99.99
pi = 3.14159
puts tinggi # 175.5
puts harga # 99.99
Integer vs Float
# Ini integer
a = 10
puts a.class # Integer
# Ini float
b = 10.0
puts b.class # Float
# Hasil operasi campuran = float
puts 10 + 0.5 # 10.5
puts 10 * 2.0 # 20.0
3. String — Teks
String adalah deretan karakter (teks). Ditulis dengan tanda kutip.
Single vs Double Quote
nama1 = 'Andika' # single quote
nama2 = "Andika" # double quote
Bedanya: Double quote mengenali escape sequence dan string interpolation.
# Single quote — literal
puts 'Halo\nDunia' # Halo\nDunia
# Double quote — interpret escape
puts "Halo\nDunia" # Halo
# Dunia
String Interpolation
nama = "Andika"
kota = "Batam"
# Pakai #{...}
puts "Nama saya #{nama}, tinggal di #{kota}"
# Output: Nama saya Andika, tinggal di Batam
Metode String Berguna
teks = "Halo Dunia"
puts teks.length # 10
puts teks.upcase # HALO DUNIA
puts teks.downcase # halo dunia
puts teks.reverse # ainuD olaH
puts teks.include?("Dunia") # true
4. Boolean — Benar/Salah
Boolean hanya punya dua nilai: true atau false.
aktif = true
nonaktif = false
puts aktif # true
puts nonaktif # false
puts aktif.class # TrueClass
Kondisi
umur = 20
if umur >= 17
puts "Dewasa"
else
puts "Anak-anak"
end
# Output: Dewasa
Operator Perbandingan
puts 5 == 5 # true (sama dengan)
puts 5 != 3 # true (tidak sama dengan)
puts 5 > 3 # true (lebih besar)
puts 5 < 3 # false (lebih kecil)
puts 5 >= 5 # true (lebih besar atau sama)
puts 5 <= 3 # false (lebih kecil atau sama)
5. Array — Daftar Nilai
Array adalah kumpulan values dalam satu variabel.
Membuat Array
buah = ["Apel", "Mangga", "Pisang"]
angka = [1, 2, 3, 4, 5]
campuran = ["Andika", 25, true, 175.5]
Akses Elemen
buah = ["Apel", "Mangga", "Pisang"]
puts buah[0] # Apel (index mulai dari 0)
puts buah[1] # Mangga
puts buah[2] # Pisang
puts buah[-1] # Pisang (elemen terakhir)
Metode Array
angka = [1, 2, 3, 4, 5]
puts angka.length # 5
puts angka.push(6) # [1, 2, 3, 4, 5, 6]
puts angka.pop # 6 (dihapus dari akhir)
puts angka.include?(3) # true
puts angka.reverse # [5, 4, 3, 2, 1]
6. Hash — Dictionary
Hash menyimpan data dalam format key-value pair.
Membuat Hash
# Syntax baru (Ruby 1.9+)
siswa = {
nama: "Andika",
umur: 25,
kota: "Batam"
}
# Syntax lama
siswa = { :nama => "Andika", :umur => 25 }
Akses Value
siswa = { nama: "Andika", umur: 25, kota: "Batam" }
puts siswa[:nama] # Andika
puts siswa[:umur] # 25
Menambah/Mengubah Data
siswa[:email] = "[email protected]" # tambah baru
siswa[:umur] = 26 # ubah yang sudah ada
Metode Hash
siswa = { nama: "Andika", umur: 25 }
puts siswa.keys # [:nama, :umur]
puts siswa.values # ["Andika", 25]
puts siswa.length # 2
puts siswa.has_key?(:nama) # true
7. Symbol — Identifier Unik
Symbol adalah immutable identifier yang sering dipake sebagai key di Hash.
:nama
:umur
:kota
Symbol vs String
# Symbol — tidak bisa diubah, hemat memori
simbol = :hello
# String — bisa diubah, makan memori
teks = "hello"
Kapan pakai Symbol?
- Sebagai key di Hash
- Sebagai identifier yang tidak berubah
- Untuk performa (lebih cepat dari String)
8. Cek Tipe Data
puts 42.class # Integer
puts 3.14.class # Float
puts "Halo".class # String
puts true.class # TrueClass
puts [1,2,3].class # Array
puts ({a: 1}).class # Hash
puts :hello.class # Symbol
Cek Tipe dengan is_a?
nama = "Andika"
puts nama.is_a?(String) # true
puts nama.is_a?(Integer) # false
9. Ringkasan
| Tipe | Contoh | Keterangan |
|---|---|---|
| Integer | 42, -5 |
Bilangan bulat |
| Float | 3.14, -0.5 |
Bilangan desimal |
| String | "Halo" |
Teks |
| Boolean | true, false |
Benar/salah |
| Array | [1, 2, 3] |
Daftar values |
| Hash | {nama: "Andika"} |
Key-value pair |
| Symbol | :nama |
Identifier unik |
Penutup
Tipe data adalah fondasi Ruby. Setiap value punya tipe, dan setiap tipe punya metode yang bisa dipanggil. Memahami tipe data membantu Anda menulis kode yang lebih efektif dan menghindari bug.
Di artikel selanjutnya, kita akan bahas Kontrol Alur dalam Ruby — if/else, case, loops, dan lainnya.