سوالات روبی : مقدماتی

درود وقت بخیر . یسری سوال آموزش روبی برام پیش اومده با اجازتون از شما راهنمایی میگیرم
ممنون از وقتی که برای راهنمایی من میزارید
در بحث Nested Hashes

cars = {
  bmw: { year:2017, color:"red"},
  porsche: { year:2014, color:"white"}
}

چطوری میتونم همزمان به سال ساخت و رنگ ماشین دسترسی داشته باشم

puts cars[:bmw][:color]

فقط یکیشو تونستم فراخوانی کنم
:pray::pray:

دقیقا سوالو متوجه نشدم ولی کد شاید کمک کنه

cars = {
  bmw: { year:2017, color:"red"},
  porsche: { year:2014, color:"white"}
}

cars[:bmw] # { year:2017, color:"red"}
cars[:bmw][:year]  # 2017
cars[:bmw][:color]  # red

puts "#{cars[:bmw][:year]} #{cars[:bmw][:color]}"
1 پسندیده
puts "#{cars[:bmw][:year]} #{cars[:bmw][:color]}"

ممنون بله پاسخ سوالم رو ارسال کردید تشکر
اشتباه من این بود که اینجوری مینوشتم و خطا میداد

puts cars[:bmw][:year][:color]

به موضوع Letter Frequency
رسیدم یکم برام مبهمه
یک مثال دیدم

freqs ={}
freqs.default = 0
text = "I like Ruby"
text.each_char { |char| freqs[char] += 1}
puts freqs

=

{"I"=>1, " "=>2, "l"=>1, "i"=>1, "k"=>1, "e"=>1, "R"=>1, "u"=>1, "b"=>1, "y"=>1}

در خروجی اون اعداد بر چه اساسی درج شده؟

بر اساس تکرار حروف در جمله بالا “ “ فقط دوبار تکرارشده بقیه حروف یکبار

2 پسندیده
def say(*words)
  puts words[-1]
end
say("how","are","you")

دوستان در خروجی بالا

puts words[-1]
,
puts words[2]

چرا هر دوش میشه you ?

چون 2 سومین عضو array برمیگردونه
۱- ‌آخرین عضو array برمیگردونه

2 پسندیده

Ok
سعی کنید هر چیزی رو با مثال های بیشتر و متفاوت تست کنید، مثلا توی این مورد با کم یا زیاد کردن المنت های آرایه یا بیرون تست کردن [1-] بدون استفاده از متد say

1 پسندیده

دوستان تفاوت دو متد inspect و to_s در چیه؟

def foo(*test)  
  test.to_s
end  
puts foo('hello','world','ruby').class

و

def foo(*test)  
  test.inspect 
end  
puts foo('hello','world','ruby').class

خروجی

#String
1 پسندیده

Inspect یک متود روی کلاس object وبه همین دلیل تمام کلاس های روبی این متود و دارند inspect بیشتر برای debug کردن و logging به کار میره و یک خروجی string از هر کلاس میده
Inspect برای استفاده در منطق اصلی برنامه ساخته نشده

to_s برای تبدیل داده به string ساخته شده و همه کلاس ها این متودو ندارند
نکته گیج کننده اینه که inspect خیلی وقتها to_s فراخوانی میکنه

2 پسندیده

دوستان وقت بخیر
امکانش هست در مورد دو متود gcd و lcm یکم توضیح بدید
سپاس

GCD

LCM
در روبی این دو جزو کتابخانه اصلی هستند

1 پسندیده