Cheat Sheet Ruby
Terakhir diperbarui
Hello World & menjalankan kode
Ruby tidak butuh boilerplate: satu baris saja sudah bisa dijalankan.
| Operasi | Sintaks |
|---|---|
| Mencetak dengan baris baru | puts "Hello, World!" |
| Mencetak tanpa baris baru | print "Hello" |
| Memeriksa isi nilai (inspect) | p [1, 2, 3] |
| Interpolasi string | puts "Hi #{name}" |
| Komentar | # this is a comment |
| Komentar beberapa baris | =begin ... =end |
| Menjalankan file | ruby app.rb |
| Shell interaktif | irb |
Variabel & tipe
Ruby bertipe dinamis; semuanya adalah object.
| Operasi | Sintaks |
|---|---|
| Variabel lokal | age = 30 |
| Konstanta | PI = 3.14 |
| Variabel instance | @name = "Ada" |
| Variabel global | $count = 0 |
| Symbol | :status |
| Nil / boolean | nil, true, false |
| Memeriksa tipe | 42.class mengembalikan Integer |
| Mengonversi tipe | "42".to_i, 42.to_s, "3.5".to_f |
String
String adalah object yang bisa diubah dan punya banyak method.
| Operasi | Sintaks |
|---|---|
| Panjang | "hello".length |
| Huruf besar / kecil | s.upcase, s.downcase |
| Menghapus spasi di tepi | s.strip |
| Mengganti | s.gsub("a", "b") |
| Memecah menjadi array | "a,b,c".split(",") |
| Mengandung substring | s.include?("ell") |
| Mengambil potongan karakter | s[0..2] |
| Menggabungkan | "foo" + "bar", s << "!" |
| Mengulang | "ab" * 3 |
| Memformat | format("%05d", 42) |
Array
Kumpulan berurutan dengan indeks bilangan bulat.
| Operasi | Sintaks |
|---|---|
| Membuat | nums = [1, 2, 3] |
| Mengakses lewat indeks | nums[0], nums[-1] |
| Menambah di akhir | nums.push(4), nums << 4 |
| Menghapus dari akhir | nums.pop |
| Panjang | nums.length |
| Map | nums.map { |n| n * 2 } |
| Menyaring | nums.select { |n| n.even? } |
| Reduce | nums.reduce(0) { |sum, n| sum + n } |
| Mengurutkan | nums.sort |
| Menggabungkan menjadi string | nums.join(", ") |
Hash
Kumpulan key-value, sering memakai symbol sebagai key.
| Operasi | Sintaks |
|---|---|
| Membuat | user = { name: "Ada", age: 30 } |
| Mengakses nilai | user[:name] |
| Mengisi nilai | user[:email] = "a@x.com" |
| Memeriksa key | user.key?(:name) |
| Menghapus key | user.delete(:age) |
| Key / value | user.keys, user.values |
| Iterasi | user.each { |k, v| puts "#{k}: #{v}" } |
| Nilai default | Hash.new(0) |
| Menggabungkan | h1.merge(h2) |
Alur kontrol
Percabangan dan perulangan; perhatikan modifier di akhir baris ala Ruby.
| Operasi | Sintaks |
|---|---|
| If / elsif / else | if x > 0 ... elsif x < 0 ... else ... end |
| If dalam satu baris (modifier) | puts "hi" if ready |
| Unless | unless done ... end |
| Ternary | x > 0 ? "pos" : "neg" |
| Case / when | case n; when 1 then ...; else ...; end |
| While loop | while i < 10 ... end |
| Until loop | until done ... end |
| Times | 5.times { |i| puts i } |
| Iterasi range | (1..5).each { |i| puts i } |
| Break / next | break, next |
Method
Ekspresi terakhir otomatis dikembalikan.
| Operasi | Sintaks |
|---|---|
| Mendefinisikan method | def add(a, b) ... end |
| Return implisit | def square(x) x * x end |
| Argumen default | def greet(name = "World") ... end |
| Argumen keyword | def box(w:, h:) ... end |
| Splat (variadic) | def sum(*nums) ... end |
| Method yang diakhiri ? | def valid? ... end |
| Method yang diakhiri ! | def normalize! ... end |
| Memanggil tanpa tanda kurung | greet "Ada" |
Block, proc & lambda
Block adalah potongan kode yang dikirim ke method; proc dan lambda menyimpannya.
| Operasi | Sintaks |
|---|---|
| Block (kurung kurawal) | [1, 2].each { |n| puts n } |
| Block (do/end) | [1, 2].each do |n| puts n end |
| Yield ke block | def run; yield; end |
| Memeriksa apakah ada block | block_given? |
| Menangkap block sebagai parameter | def run(&blk); blk.call; end |
| Membuat proc | square = proc { |x| x * x } |
| Membuat lambda | square = ->(x) { x * x } |
| Memanggil proc / lambda | square.call(3), square.(3) |
Class & module
Class menyimpan state dan perilaku; module menyisipkan method bersama.
| Operasi | Sintaks |
|---|---|
| Mendefinisikan class | class Point ... end |
| Constructor | def initialize(x, y) @x = x; @y = y; end |
| Method instance | def dist ... end |
| Shortcut accessor | attr_accessor :x, :y |
| Membuat instance | p = Point.new(1, 2) |
| Pewarisan | class Circle < Shape ... end |
| Method class | def self.origin ... end |
| Mendefinisikan module | module Drawable ... end |
| Menyisipkan module (mixin) | include Drawable |
| Memanggil super | super(args) |
Sintaks Ruby yang paling sering kamu pakai, dalam satu halaman. Cheat sheet Ruby ini adalah referensi cepat untuk inti bahasanya: variabel dan tipe, string, array dan hash, alur kontrol, method, serta block, proc, dan lambda yang membuat Ruby begitu ekspresif.
Semua yang ada di sini adalah Ruby biasa dan berjalan di interpreter standar mana pun. Salin yang kamu butuhkan, atau coba setiap potongan kode langsung di playground Ruby, tanpa perlu instalasi.
FAQ cheat sheet Ruby
Apakah cheat sheet Ruby ini gratis?
Ya. Cheat sheet Ruby ini sepenuhnya gratis, tanpa perlu daftar. Simpan di bookmark dan kembali kapan pun kamu perlu mencari method string, operasi hash, atau sintaks block.
Apa perbedaan block, proc, dan lambda?
{ ... } atau do ... end; block sendiri bukan object. proc membungkus block menjadi object yang bisa dipanggil, disimpan, dan diteruskan. lambda adalah proc khusus yang memeriksa jumlah argumennya secara ketat dan memperlakukan return sebagai keluar dari lambda itu sendiri, sedangkan proc biasa keluar dari method yang membungkusnya.Apa itu symbol di Ruby?
:name adalah pengenal yang tidak bisa diubah dan bisa dipakai ulang. Karena symbol yang sama selalu menunjuk ke object yang sama di memori, symbol lebih cepat dan lebih hemat memori daripada string untuk hal seperti key hash dan nama method. Itulah sebabnya kamu sering melihat hash ditulis seperti { name: "Ada" }.Bisakah saya berlatih Ruby secara online?
Bisa. Buka playground Ruby untuk menjalankan potongan kode apa pun dari cheat sheet ini di browsermu, tanpa perlu menginstal Ruby. Kalau kamu ingin belajar terarah, kursus Ruby interaktif gratis dari Coddy membawamu dari variabel dan string sampai block dan class, langkah demi langkah.
Apakah cheat sheet ini cocok untuk pemula?
Cocok. Isinya disusun mulai dari topik yang paling umum (variabel, string, alur kontrol) sampai yang lanjutan (block, proc, class), jadi kamu bisa memakai bagian atas sejak hari pertama dan pelan-pelan menguasai sisanya.