تبدیل نوع در روبی

تبدیل بین انواع داده: to_i، to_f، to_s، to_a، to_h و تبدیل‌های پیشرفته

تبدیل نوع چیست؟

تبدیل نوع (Type Conversion) یعنی تغییر یک نوع داده به نوع دیگر. روبی متدهای مختلفی برای این کار دارد.

تبدیل به رشته (to_s)

puts 42.to_s         # => "42"
puts 3.14.to_s       # => "3.14"
puts true.to_s       # => "true"
puts nil.to_s        # => ""
puts [1, 2].to_s     # => "[1, 2]"
puts({ a: 1 }.to_s)  # => "{:a=>1}"

تبدیل به عدد صحیح (to_i)

puts "42".to_i        # => 42
puts "3.14".to_i      # => 3 (بخش اعشار حذف می‌شود)
puts "abc".to_i       # => 0 (نامعتبر → 0)
puts "42abc".to_i     # => 42 (تا جایی که عدد است)
puts 3.99.to_i        # => 3 (گرد نمی‌شود!)
puts true.to_i        # => 1
puts false.to_i       # => 0
puts nil.to_i         # => 0

تبدیل به عدد اعشاری (to_f)

puts "3.14".to_f      # => 3.14
puts "42".to_f        # => 42.0
puts 42.to_f          # => 42.0
puts "abc".to_f       # => 0.0

تبدیل به آرایه (to_a)

puts (1..5).to_a.inspect      # => [1, 2, 3, 4, 5]
puts "hello".chars.inspect    # => ["h", "e", "l", "l", "o"]
puts({ a: 1 }.to_a.inspect)   # => [[:a, 1]]

تبدیل به هش (to_h)

arr = [[:a, 1], [:b, 2]]
puts arr.to_h.inspect  # => {:a=>1, :b=>2}

جدول کامل تبدیل‌ها

متدتوضیحمثال
to_sبه رشته42.to_s → "42"
to_iبه عدد صحیح"42".to_i → 42
to_fبه عدد اعشاری"3.14".to_f → 3.14
to_rبه کسر (Rational)"1/2".to_r
to_cبه عدد مختلط5.to_c
to_aبه آرایه(1..3).to_a
to_hبه هش[[:a,1]].to_h
to_symبه نماد"name".to_sym
charsرشته به آرایه کاراکتر"ab".chars
splitرشته به آرایه"a,b".split(",")
joinآرایه به رشته[1,2].join(",")
keysهش به آرایه کلیدهاh.keys
valuesهش به آرایه مقادیرh.values

تبدیل صریح vs ضمنی

روبی دو نوع تبدیل دارد:

# صریح — همیشه کار می‌کند
puts 42.to_s  # => "42"

# ضمنی — خطا می‌دهد اگر واقعاً رشته نباشد
# puts 42.to_str  # => ❌ خطا!

تبدیل با Integer() و Float()

این متدها سخت‌گیرانه‌تر هستند:

puts Integer("42")    # => 42
puts Float("3.14")    # => 3.14

# puts Integer("abc") # => ❌ خطا! (برخلاف "abc".to_i که 0 می‌دهد)
# puts Integer("3.14") # => ❌ خطا!

خلاصه

این مبحث بخشی از دوره آموزش کامل روبی است.

ابزارهای مرتبط