Rubyの基礎2
どうもhiroakiです。
今回はRubyの基礎について紹介したいと思います。Webサイトを作ろうとしている人にとってRubyは必須の言語です。自分はとにかくウェブサイトを作ってみたい人間ですので、これをなんとか習得したいと思っています。これからまとめる内容を、みなさんもぜひ参考にしてみてください。
ちなみに、前回までの内容は次に載せています。
lesson7
配列
配列は複数の値を格納することができるもので、[値1, 値2, 値3]のように作ります。配列に入っているそれぞれの値のことを要素と呼びます。
- names = ["sasaki","hiroaki","tom"]
- puts names
- nums = [12,22,33]
- puts "#{nums[2]}歳"
- nums[1] = 10
- puts "#{nums[2]}歳"
配列の変数名は、複数形にすることが多いです。また、配列の要素には、前から順に「0, 1, 2, ...」と数字が割り振られています。これをインデックス番号といいます。例えば、4.行目のnums[2]はnums配列の3番目の数値である33を示しています。
5.のようにインデックス値の要素に代入すると、配列のインデックス番号の要素を上書きできます。
配列に関係するメソッドには以下のものがあり、よく使うので押さえましょう。
配列の末尾に要素を追加
names.push("Tomozou")
配列の要素を削除
names.delete_at(0)
lengthメソッド 要素の数
puts names.length
ハッシュ
ハッシュはそれぞれの値にキーと呼ばれる名前をつけて管理します。配列の場合と違って、格納している値がどんな値か分かるので、便利ですね。
下のように、ハッシュには3つの書き方がありますが、キーがシンボルの書き方の省略形が最も使われます。
- #キーが文字列の書き方
- user = {"name" => "Suzuki" , "age"=> 21}
- puts user["name"]
- #キーがシンボルの書き方
- user ={:name => "Suzuki" , :age => 21}
- puts user[:name]
- #キーがシンボルの書き方(省略形)
- user ={name: "Suzuki",age: 21}
- puts user[:name]
1.ハッシュは{キー1 => 値1, キー2 => 値2}のようにつくります。ハッシュの各要素の値は、対応するキーを使って、ハッシュ[キー]とすることで用いることができます。user["name"]とすると、ハッシュuserのキー「"name"」と対応している値を用いることができます。
4.ハッシュは、キーの部分を文字列ではなく、先頭にコロン:を付けたシンボルと呼ばれる書き方で書くこともできます。文字列とシンボルは、基本的に同じように使うことができます。シンボルは、ハッシュのキーとしてよく使われます。ハッシュのキーの部分でシンボルを用いた場合には、その値を用いる時もシンボルで指定する必要があります。
7.ハッシュのキーにシンボルを用いるときには、省略した書き方ができます。「:key =>」を「key:」というように省略することができます。省略した書き方の場合でも、要素を取得する場合にシンボルを用いる必要があります。
ハッシュの要素を更新するには、配列の時のように、ハッシュ[キー] = 値と書きます。また、ハッシュ[新しいキー] = 値と書くことで、ハッシュに新しい要素を追加することができます。
ハッシュから存在しないキーの値を取り出した時の「何もない」という値は、Rubyでは「nil」(ニル)という特別な値で表現され、エラーにはなりません。
- #キーが文字列の書き方
- user = {name: "Suzuki" , age: 21}
- puts user["pet"] #nil
nilは「何もない」という意味で、putsしても何も表示されませんが、データとしてはnilが返っていることは覚えておいてください。
「if ハッシュ[キー]」とすることで、値がない場合、すなわちnilの場合はfalseとして扱われます。下にコード例を書いているので参考にしてみてください。ちなみに、ここで出てきているeach文は次のlessonで紹介しています。
- user1 = {name: "Suzuki",age: 21}
- user2 = {name: "Sasaki",age: 18,pet: "トム"}
- users = [
- user1,
- user2,
- {name: "Suga",age: 52,pet: "ちろ"}
- ]
- users.each do |user|
- if user[:pet]
- puts "#{user[:name]}さん(#{user[:age]})は#{user[:pet]}という名前のペットを飼っています。"
- else
- puts "#{user[:name]}さん(#{user[:age]})はペットを飼っていません。"
- end
- end
変数は「何でも好きな物を入れることができる箱のようなもの」でしたね。例えば、3.~7.行目のように配列を作り、ハッシュを含めることもできます。
また、下記のように配列[インデックス番号][キー]で、特定のハッシュの値を用いることができます。覚えておきましょう。
- user1 = {name: "Suzuki",age: 21}
- user2 = {name: "Sasaki",age: 18,pet: "トム"}
- users = [
- user1,
- user2,
- {name: "Suga",age: 52,pet: "ちろ"}
- ]
- puts users[1][:name]
lesson8
繰り返し処理には、each文をよく使います。each文を使うと、配列の要素を順番に取り出して処理を行うことができます。
- nums = [12,22,33]
- nums.each do |num|
- puts "#{num}歳"
- end
each文は「配列.each do |変数名|」で書き、「end」までの間に実行したい処理を書きます。endの書き忘れに注意しましょう。変数numにはnumsの値がインデックス順に代入されていきます。
for文でも行うことができます。
- nums = [12,22,33]
- for num in nums
- puts "#{num}歳"
- end
for文は上記のように「for カウンタ変数 in 変数」で書きます。変数からカウンタ変数を取り出して使うイメージです。
lesson9
メソッド
putsやprintのような命令を出す言葉を、ルビーではメソッドと呼んでいます。ランダムな数値を返すrandメソッドを使ってみましょう。
- number = rand(1..100)
- puts number #デバック用
- if number == 1
- puts "100万円当選です"
- end
rand(1..100)で1から100までの数値からランダムに値を返しています。
ちなみに2.行目のデバッグ (debug) とは、プログラムの不具合・欠陥(bug)を見つけて修正し、正常に動作させるための作業全般を指します。
こちらの参考記事は少し古いものですが、リファレンスとしておすすめです。
今回は以上です。
次回以降もまとめていきます。自分も学びながらまとめていっているので、間違いや意見、質問等あればコメントください。
よろしくお願いします。
ではでは。