Menu
Coddy logo textTech

Ruby Hile Sayfası

Son güncelleme

Hello World ve kod çalıştırma

Ruby şablon koda ihtiyaç duymaz - tek bir satır çalışır.

İşlemSöz dizimi
Satır sonuyla yazdırputs "Hello, World!"
Satır sonu olmadan yazdırprint "Hello"
Bir değeri incelep [1, 2, 3]
Dize interpolasyonuputs "Hi #{name}"
Yorum# this is a comment
Çok satırlı yorum=begin ... =end
Bir dosyayı çalıştırruby app.rb
Etkileşimli kabukirb

Değişkenler ve tipler

Ruby dinamik tiplidir; her şey bir nesnedir.

İşlemSöz dizimi
Yerel değişkenage = 30
SabitPI = 3.14
Örnek değişkeni@name = "Ada"
Global değişken$count = 0
Sembol:status
Nil / booleannil, true, false
Tipi kontrol et42.class, Integer döndürür
Tip dönüştür"42".to_i, 42.to_s, "3.5".to_f

Dizeler

Dizeler, zengin bir metot kümesine sahip değiştirilebilir nesnelerdir.

İşlemSöz dizimi
Uzunluk"hello".length
Büyük / küçük harfs.upcase, s.downcase
Boşlukları kırps.strip
Değiştirs.gsub("a", "b")
Diziye böl"a,b,c".split(",")
Alt dizeyi içerir mis.include?("ell")
Karakterleri dilimles[0..2]
Birleştir"foo" + "bar", s << "!"
Tekrarla"ab" * 3
Biçimlendirformat("%05d", 42)

Diziler

Sıralı, tam sayı indeksli koleksiyonlar.

İşlemSöz dizimi
Oluşturnums = [1, 2, 3]
İndeksle erişnums[0], nums[-1]
Sona eklenums.push(4), nums << 4
Sondan kaldırnums.pop
Uzunluknums.length
Mapnums.map { |n| n * 2 }
Filtrelenums.select { |n| n.even? }
İndirge (reduce)nums.reduce(0) { |sum, n| sum + n }
Sıralanums.sort
Dizeye birleştirnums.join(", ")

Hash'ler

Anahtar-değer koleksiyonları, genellikle sembollerle anahtarlanır.

İşlemSöz dizimi
Oluşturuser = { name: "Ada", age: 30 }
Değere erişuser[:name]
Değer ayarlauser[:email] = "a@x.com"
Anahtar kontrol etuser.key?(:name)
Anahtar siluser.delete(:age)
Anahtarlar / değerleruser.keys, user.values
Dolaşuser.each { |k, v| puts "#{k}: #{v}" }
Varsayılan değerHash.new(0)
Birleştirh1.merge(h2)

Kontrol akışı

Koşullar ve döngüler; Ruby'nin sondaki değiştiricilerine dikkat edin.

İşlemSöz dizimi
If / elsif / elseif x > 0 ... elsif x < 0 ... else ... end
Satır içi if (değiştirici)puts "hi" if ready
Unlessunless done ... end
Üçlü (ternary)x > 0 ? "pos" : "neg"
Case / whencase n; when 1 then ...; else ...; end
While döngüsüwhile i < 10 ... end
Until döngüsüuntil done ... end
Times5.times { |i| puts i }
Aralık üzerinde yineleme(1..5).each { |i| puts i }
Break / nextbreak, next

Metotlar

Son ifade örtük olarak döndürülür.

İşlemSöz dizimi
Bir metot tanımladef add(a, b) ... end
Örtük returndef square(x) x * x end
Varsayılan argümandef greet(name = "World") ... end
Anahtar kelime argümanlarıdef box(w:, h:) ... end
Splat (variadic)def sum(*nums) ... end
? ile biten metotdef valid? ... end
! ile biten metotdef normalize! ... end
Parantezsiz çağırgreet "Ada"

Block'lar, proc'lar ve lambda'lar

Block'lar metotlara geçirilen kod parçalarıdır; proc'lar ve lambda'lar onları saklar.

İşlemSöz dizimi
Block (süslü parantez)[1, 2].each { |n| puts n }
Block (do/end)[1, 2].each do |n| puts n end
Bir block'a yield etdef run; yield; end
Block verildi mi kontrolüblock_given?
Block'u parametre olarak yakaladef run(&blk); blk.call; end
Bir proc oluştursquare = proc { |x| x * x }
Bir lambda oluştursquare = ->(x) { x * x }
Bir proc / lambda çağırsquare.call(3), square.(3)

Sınıflar ve modüller

Sınıflar durum ve davranışı tutar; modüller ortak metotları karıştırır (mixin).

İşlemSöz dizimi
Bir sınıf tanımlaclass Point ... end
Yapıcı (constructor)def initialize(x, y) @x = x; @y = y; end
Örnek metodudef dist ... end
Erişimci kısayollarıattr_accessor :x, :y
Örnek oluşturp = Point.new(1, 2)
Kalıt alclass Circle < Shape ... end
Sınıf metodudef self.origin ... end
Bir modül tanımlamodule Drawable ... end
Bir modülü karıştır (mixin)include Drawable
super çağırsuper(args)

En çok başvurduğunuz Ruby söz dizimi tek sayfada. Bu Ruby hile sayfası, temel dil için hızlı bir başvurudur - değişkenler ve tipler, dizeler, diziler ve hash'ler, kontrol akışı, metotlar ve Ruby'yi bu kadar anlaşılır kılan block'lar, proc'lar ve lambda'lar.

Buradaki her şey saf Ruby'dir ve herhangi bir standart yorumlayıcıda çalışır. İhtiyacınız olanı kopyalayın ya da her kod parçasını Ruby playground'da canlı deneyin - kurulum gerekmez.

Ruby hile sayfası SSS

Bu Ruby hile sayfası ücretsiz mi?
Evet. Bu Ruby hile sayfası tamamen ücretsizdir ve kayıt gerektirmez. Yer imlerinize ekleyin ve bir dize metoduna, hash işlemine ya da block söz dizimine bakmanız gerektiğinde geri dönün.
Block, proc ve lambda arasındaki fark nedir?
Bir block, bir metoda { ... } veya do ... end ile geçirilen anonim bir kod parçasıdır - tek başına bir nesne değildir. Bir proc, bir block'u saklayabileceğiniz ve etrafta dolaştırabileceğiniz çağrılabilir bir nesnenin içine sarar. Bir lambda, argüman sayısını katı şekilde kontrol eden ve return'ü lambda'nın kendisinden dönmek olarak işleyen özel bir proc'tur; oysa sade bir proc, içinde bulunduğu metottan döner.
Ruby'de semboller nedir?
:name gibi bir sembol, değiştirilemez, yeniden kullanılabilir bir tanımlayıcıdır. Aynı sembol her zaman bellekte aynı nesneyi gösterdiğinden, semboller hash anahtarları ve metot adları gibi şeyler için dizelerden daha hızlı ve bellek açısından daha verimlidir - bu yüzden hash'leri sıkça { name: "Ada" } şeklinde yazılmış görürsünüz.
Ruby'yi çevrimiçi olarak deneyebilir miyim?
Evet. Ruby playground'u açarak bu hile sayfasındaki herhangi bir kod parçasını tarayıcınızda çalıştırabilirsiniz - Ruby kurulumu gerekmez. Yapı istediğinizde, Coddy'nin ücretsiz etkileşimli Ruby kursu sizi değişkenler ve dizelerden block'lara ve sınıflara adım adım götürür.
Bu hile sayfası yeni başlayanlar için uygun mu?
Evet. En yaygın konulardan (değişkenler, dizeler, kontrol akışı) gelişmiş olanlara (block'lar, proc'lar, sınıflar) doğru düzenlenmiştir, böylece üstteki bölümleri ilk günden kullanabilir ve zamanla geri kalanına geçebilirsiniz.
Coddy programming languages illustration

Coddy ile Ruby öğren

BAŞLA