2017-09-19 17 views
0

名前、年齢、故郷、お気に入りの食べ物に関連するデータを含むハッシュを作成しています。私はその情報を受け取り、それから文を出しています。私は正常に動作するように私のコードを持っている、しかし、彼らはそれが短い方法を行うかどうかは不思議です。ここで改良された方法Rubyハッシュを使って文章を作る

は私のコードです:あなたはHashキーシンボルを作る場合

I am Randy. I am 28-years-old. I'm from Jamesville and my favorite food is 
Chicken. 
+0

今、あなたのコードが明確ですそれが何をしているのか。少ないコードからどのように利益を得ますか?少ないコード!=より良いコード。あなたは、コードを明確かつ維持可能にしたいと思っています。数行のコードを保存するためにこのコードを犠牲にした場合(またはこのコードの文字数)、コードを維持または変更する必要がある場合にのみ、将来の自己(または他の誰か)の問題を解決します。 – Dbz

+0

これを投稿する必要があります。https://codereview.stackexchange.com – Stefan

+0

True Dbz、私はそれを考慮していませんでした。 –

答えて

2

を出力します

person = {"Name" => "Randy", "Age" => 28, "Hometown" => "Jamesville", 
"Favorite Food" => "Chicken"} 

puts "I am #{person.fetch("Name")}. I am #{person.fetch("Age")}-years-old. 
I'm from #{person.fetch("Hometown")} and my favorite food is # 
{person.fetch("Favorite Food")}" 

例えば

person = {name: "Randy", 
      age: 28, 
      hometown: "Jamesville", 
      favorite_food: "Chicken"} 

代わりにKernel#sprintfを使用できます。

sentence = "I am %{name}. I am %{age}-years-old. 
     I'm from %{hometown} and my favorite food is %{favorite_food}" 
sprintf sentence, person 
#=> "I am Randy. I am 28-years-old.\nI'm from Jamesville and my favorite food is Chicken" 

またはこれらのメソッドの両方が(ちなみにHashのための好適な構文である)ものの象徴キーに依存しているString#%

puts sentence % person 
# I am Randy. I am 28-years-old. 
#  I'm from Jamesville and my favorite food is Chicken 
#=> nil 

を使用することができます

関連する問題