logo
eng-flag

Ruby Notları ve İpuçları

İçindekiler

  1. Temel Sözdizimi
  2. Veri Türleri
  3. Değişkenler
  4. Operatörler
  5. Kontrol Akışı
  6. Metodlar
  7. Diziler ve Hashler
  8. Nesne Yönelimli Programlama
  9. Modüller ve Karışımlar
  10. Bloklar, Procs ve Lambdalar
  11. İstisna Yönetimi
  12. Dosya Yönetimi
  13. Ruby Gemleri ve Bundler
  14. Metaprogramlama

Temel Sözdizimi

Yorumlar

# Bu bir satırlık yorum

=begin
Bu bir
çok satırlı yorum
=end

Merhaba Dünya

puts "Merhaba, Dünya!"

Veri Türleri

Sayılar

integer = 42
float = 3.14

Karakter Dizileri

single_quoted = 'Merhaba'
double_quoted = "Dünya"
interpolation = "#{single_quoted}, #{double_quoted}!"

Semboller

symbol = :benim_sembol

Booleanlar

true_val = true
false_val = false

Diziler

array = [1, 2, 3, 4, 5]

Hashler

hash = { "anahtar" => "değer", :sembol_anahtar => "başka değer" }

Değişkenler

# Yerel değişken
local_var = "Ben yerelim"

# Örnek değişkeni
@instance_var = "Ben bir örnek değişkeniyim"

# Sınıf değişkeni
@@class_var = "Ben bir sınıf değişkeniyim"

# Global değişken
$global_var = "Ben globalim"

# Sabitler
CONSTANT = "Ben bir sabitim"

Operatörler

Aritmetik Operatörler

a, b = 10, 3

puts a + b  # Toplama: 13
puts a - b  # Çıkarma: 7
puts a * b  # Çarpma: 30
puts a / b  # Bölme: 3
puts a % b  # Modül: 1
puts a ** b # Üs Alma: 1000

Karşılaştırma Operatörleri

x, y = 5, 10

puts x == y # Eşit: false
puts x != y # Eşit değil: true
puts x > y  # Büyük: false
puts x < y  # Küçük: true
puts x >= y # Büyük veya eşit: false
puts x <= y # Küçük veya eşit: true

Mantıksal Operatörler

a, b = true, false

puts a && b # Mantıksal VE: false
puts a || b # Mantıksal VEYA: true
puts !a     # Mantıksal DEĞİL: false

Kontrol Akışı

If-Else İfadesi

x = 10

if x > 0
  puts "Pozitif"
elsif x < 0
  puts "Negatif"
else
  puts "Sıfır"
end

# Tek satırlık if ifadesi
puts "Pozitif" if x > 0

Case İfadesi

grade = 'B'

case grade
when 'A'
  puts "Harika!"
when 'B'
  puts "İyi iş!"
when 'C'
  puts "Geçtiniz."
else
  puts "Daha çok çalışmalısınız."
end

Döngüler

# While döngüsü
i = 0
while i < 5
  puts i
  i += 1
end

# For döngüsü
for i in 0..4
  puts i
end

# Each döngüsü
(0..4).each do |i|
  puts i
end

# Times döngüsü
5.times { |i| puts i }

Metodlar

# Metod tanımı
def greet(name)
  "Merhaba, #{name}!"
end

# Metod çağrısı
puts greet("Alice")

# Varsayılan argümanlı metod
def power(base, exponent = 2)
  base ** exponent
end

puts power(3)    # 9
puts power(3, 3) # 27

# Değişken sayıda argüman
def sum(*numbers)
  numbers.inject(0, :+)
end

puts sum(1, 2, 3, 4, 5) # 15

Diziler ve Hashler

Diziler

fruits = ["elma", "muz", "kiraz"]

puts fruits[0]  # elma
fruits << "hurma"  # Sona ekle
fruits.push("karadut")  # Başka bir şekilde sona ekle
fruits.unshift("kayısı")  # Başa ekle

puts fruits.length  # 6
puts fruits.include?("muz")  # true

fruits.each { |fruit| puts fruit }

Hashler

person = { "isim" => "John", "yaş" => 30, "şehir" => "New York" }

puts person["isim"]  # John
person[:meslek] = "Mühendis"  # Yeni anahtar-değer çifti ekleme

person.each do |key, value|
  puts "#{key}: #{value}"
end

# Sembol anahtarlar (Ruby'de yaygındır)
options = { font: "Arial", size: 12, color: "mavi" }
puts options[:font]  # Arial

Nesne Yönelimli Programlama

Sınıf Tanımı

class Car
  attr_accessor :brand, :model

  def initialize(brand, model)
    @brand = brand
    @model = model
  end

  def start
    puts "The #{brand} #{model} is starting..."
  end
end

# Bir nesne oluşturma
my_car = Car.new("Toyota", "Corolla")
my_car.start

Miras

class ElectricCar < Car
  attr_accessor :battery_capacity

  def initialize(brand, model, battery_capacity)
    super(brand, model)
    @battery_capacity = battery_capacity
  end

  def start
    puts "The #{brand} #{model} is starting silently..."
  end
end

Modüller ve Karışımlar

module Drivable
  def drive
    puts "Araç hareket ediyor"
  end
end

class Car
  include Drivable
end

my_car = Car.new
my_car.drive  # Araç hareket ediyor

Bloklar, Procs ve Lambdalar

# Blok
[1, 2, 3].each { |num| puts num }

# Çok satırlı blok
[1, 2, 3].each do |num|
  puts num
end

# Proc
square = Proc.new { |x| x ** 2 }
puts square.call(5)  # 25

# Lambda
cube = ->(x) { x ** 3 }
puts cube.call(3)  # 27

İstisna Yönetimi

begin
  # İstisna oluşturabilecek kod
  result = 10 / 0
rescue ZeroDivisionError => e
  puts "Sıfıra bölünemez: #{e.message}"
rescue StandardError => e
  puts "Bir hata oluştu: #{e.message}"
else
  puts "Hata oluşmadı"
ensure
  puts "Bu blok her zaman çalışır"
end

Dosya Yönetimi

# Dosya okuma
File.open('dosya.txt', 'r') do |file|
  file.each_line { |line| puts line }
end

# Dosya yazma
File.open('dosya.txt', 'w') do |file|
  file.puts "Yeni bir satır"
end

Ruby Gemleri ve Bundler

# Gemfile
source "https://rubygems.org"

gem "rails", "~> 6.1"
gem "pg", "~> 1.2"

# Bundler'ı yükleme ve bağımlılıkları kurma
# terminal
bundle install

Metaprogramlama

class DynamicMethod
  define_method(:greet) do |name|
    "Merhaba, #{name}!"
  end
end

obj = DynamicMethod.new
puts obj.greet("Alice")  # Merhaba, Alice!

2024 © Tüm hakları saklıdır - buraxta.com