Ruby基本文法まとめ (fromドットインストールRuby入門)
まずは入門ということでドットインストールのRuby入門を1週おわらせてみた.
この記事でいう「基本文法」はこのドットインストール紹介されている文法に基づいてます.
ということで僕が纏めたノートをのせてみます!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
・オブジェクトを表示するメソッド
・print・・・普通に表示
・puts・・・改行付きで表示
・p・・・オブジェクトの型が分かるように表示
・変数:オブジェクトにつける名札は英子文字か_で始まる
・定数:変更がきかない.全て大文字
・数値的なオブジェクト
・Rational(2, 3):3分の2を表す
・数値的オブジェクトで使えるメソッド
・to_i:toのintegerでオブジェクトを整数型に
・to_r:分数に
・round:四捨五入 (ceil:繰り上げ,floor:繰り下げ)
・rand(100):0~99までの乱数
・Math.sqrt(2):2の平方根
・文字列オブジェクト・・・Stringクラス
・ダブルクオーテーション:変数や特殊文字を展開
・シングルクオーテーション:展開しない
・#{hensuu}:変数の値を展開
name = "aaa" puts "My name is #{name}"
・# encoding: utf-8:コードの最初に付けて文字コードを指定(マルチバイトに対応)
・文字列オブジェクトで使えるメソッド
・upcase:全部大文字にする
・reverse:逆順にする
・index("o"):oが何文字目に出て来ているのか示す(ゼロから)
・include?("o"):oが含まれているかどうかを返す
・破壊的メソッド・・・メソッドの最後に!をつけると,もとの変数にもそのメソッドが適用される
s = "hello" s1 = s.upcase! p s p s1
- 出力結果-
"HELLO"
"HELLO"
・配列オブジェクト・・・Arrayクラス
・fruits = ["apple", "orange", "banana"]
・p fruits[1..2]:範囲指定も可能!1~2まで
・p fruits[0…2]:0~1まで
・p fruits[-1]:後ろから1番目の要素→"banana"
・fruits[1,2] = ["lemon", "pineapple"]:1番目から2つ分の配列を指定して値を変更した
→fruits[1, 0] = ["lemon", "pineapple"]:1番目の後に2つの値が挿入される
・配列オブジェクトの演算
・&:共通部分のみ抽出
・|:重複がないように全てを羅列
・-:重複部分をなくす
・+:重複部分関係なく連結
・配列オブジェクトのメソッド
・uniq:重複値を取り除く
・sort:順番に並び替える(破壊的メソッド使用可)
・unshift(1) / push(1):(先頭 / 末尾)1という値を追加
・shift / pop:(先頭 / 末尾)を削除
・ハッシュオブジェクト(連想配列)・・・Hashクラス
sales = {"aaa"=>100, "bbb"=>150, "ccc"=>80}
・メソッド
・size / length:要素数を返す
・empty?:空であるかどうか返す
・has_key?("key"):keyというキーがあるかどうか返す
・Time.now:現在時刻の値
→Time.now.month:現在時刻のうちの月の部分だけ
・Time.mktime(2013, 9, 3, 9, 0, 0):年月日の値を設定できるオブジェクト
→2013年9月3日9:00
・Time.now.strftime("%Y/%m/&d"):今の時間のうち指定したものを指定した順番で
・printfメソッド
・%s:文字列
・%d:整数
・%-010s:文字列を左揃えで常に10桁で表示.空いている場所は0で埋める.
・sprintf:その値を返す.x = sprintf(~)にしたりってこと.
・条件分岐
score = 62 if score >= 80 puts "great!" elseif score >= 60 puts "nice!" else puts "not so good" end puts "great" if score >= 80
・条件演算子
・(条件) ? 値1 : 値2 :条件が真ならば値1を,偽ならば値2を返す
a = 50
b = 20
max = a > b ? a : b
・case文による条件分岐
case sinal when "red" puts "stop!" when "yellow" puts "caution!" when "green", "blue" puts "go!" else puts "signal is broken" end
・比較演算子
・=~:文字列の正規表現とのマッチングを調べる
puts "match!" if /aaa/ =~ "my name is aaa"
・各演算子は&&や||で繋げることが出来る
◯繰り返し処理
・time
10.times do |i|#|i|はなくても動く.繰り返しの回数が入っている変数 puts "Hi!" puts "#{i} end
・for / each
users = ["aaa", "bbb", "ccc"] for user in users do puts user end#3つの名前が羅列される users.each do |user| puts user end for i in 1..10 do puts i end
・ハッシュオブジェクトと繰り返し処理
# 繰り返し処理 each #users = ["taguchi", "fkoji", "dotinstall"] scores = {"taguchi"=>200, "fkoji"=>300, "dotinstall"=>120} scores.each do |name, score| printf("%s's score is %d\n", name, score) end
・while
i=1 while i < 10 do puts i i = i +1 end
・メソッドの定義
def sing(word = "la", num) # wordという引数の初期値をlaという文字列に設定numは2つめの引数 s = "" for i in 1..num do s += word end s += "~" return s end res = sing("hu", 10) puts res
※引数はコンマで続けて複数指定可能
・sing():上記メソッドを起動
・return s:メソッドの返り値を,sの値で返す.
・クラスの生成
class Monster def initialize(name) # このクラスがインスタンス化されたときに必ず実行されるメソッド @name = name @hp = 100 + rand(100) end def damage @hp -= 10 + rand(10) printf("%s's hp is now %d\n", @name, @hp) printf("%s is now dead!") end end