Ruby文法入門まとめ
hello world
printf "hello world!" # 末尾改行なし => hello world! print "hello world!" # 末尾改行なし => hello world! puts "hello world!" # 末尾改行あり => hello world!¥n p "hello world!" # 形式がわかる => "hello world!"¥n
変数
lang = "Ruby" # 変数 lang = "Java" # 書き換えOK LANG = "Ruby" # 定数(先頭大文字) LANG = "Java" # 書き換え不可。エラーとなる
数値
http://ruby-doc.org/core-2.1.3/Numeric.html(v2.1.3)
http://ruby-doc.org/core-2.1.3/Float.html(v2.1.3)
num = 10 # integer => 10 num = 10.0 # float => 10.0 num = 10.to_f # float変換 => 10.0 num = 10.9.to_i # integer変換(切り捨て) => 10 num = 100_000 # "_"は無視 => 100000 num = 10.56.round # 四捨五入 => 11 num = 10.32.ceil # 切り上げ => 11 num = 10.78.floor # 切り捨て => 10 num = (-10.5).abs # 絶対値 => 10.5 num = 10 + 5 # 加算 => 15 num = 10 - 5 # 減算 => 5 num = 10 * 5 # 乗算 => 50 num = 10 / 5 # 除算 => 2 num = 10 % 5 # 余り => 0
文字列
http://www.ruby-doc.org/core-2.1.3/String.html(v2.1.3)
a = "Ruby" # string => Ruby a = 'Ruby' # string => Ruby b = "I like #{a}" # 変数置換 => I like Ruby b = 'I like #{a}' # 変数置換しない => I like #{a} c = "10" + "5" # 結合 => 105 c = "10" << "5" # 末尾に結合 => 105 d = "I like Ruby" d.length # 文字列の長さ => 11 d.reverse # 文字列を逆転 => ybuR ekil I d.upcase # 大文字に変換 => I LIKE RUBY d.upcase! # 大文字に変換して変数の値も変更 => I LIKE RUBY d.downcase # 小文字に変換 => i like ruby d.downcase! # 小文字に変換 => i like ruby e = "I like Ruby" e.empty? # 空かどうか => false f = "I like Ruby" f[2] # 3番目の文字を取得 => l f[2, 4] # 3番目から4文字の文字を取得 => like f[-1] # 最後尾の文字を取得 => y
配列
http://www.ruby-doc.org/core-2.1.3/Array.html(v2.1.3)
array = [2, 5, 4, 1, 3] array[0] # 1番目 => 2 array[-1] # 最後尾 => 3 array[1..3] # 2〜4番目 => [5, 4, 1] array[1...3] # 2〜3番目 => [5, 4] array.length # 配列の長さ => 5 array.reverse # 配列を逆順に => [3, 1, 4, 5, 2] array.sort # 配列を小さい順にソート => [1, 2, 3, 4, 5] array.sort.reverse # 配列を大きい順にソート => [5, 4, 3, 2, 1] p array << 6 # 末尾に追加 => [2, 5, 4, 1, 3, 6]
ハッシュ
http://www.ruby-doc.org/core-2.1.3/Hash.html(v2.1.3)
hash = {"name" => "kimura", "lang" => "ruby"} # {key1 => value1, key2 => value2, ...} hash["name"] # キー名でアクセス => kimura hash = {:name => "kimura", :lang => "ruby"} # {symbol1 => value1, symbol2 => value2, ...} hash = {name: "kimura", lang: "ruby"} # {symbol1: value1, symbol2: value2, ...} ※v1.9から hash[:name] # シンボル名でアクセス => kimura p hash.size # 要素数 => 2 p hash.keys # キーの一覧 => [:name, :lang] p hash.values # 値の一覧 => ["kimura", "ruby"] p hash.has_key?(:name) # キーが存在するか => true
if,case
color = "blue" # if if color == "red" puts "赤です" elsif color == "green" puts "緑です" elsif color == "blue" puts "青です" end puts "赤です" if color == "red" puts "緑です" if color == "green" puts "青です" if color == "blue" # unless unless color == "red" puts "赤ではありません" end puts "赤ではありません" unless color == "red" # case case color when "red" puts "赤です" when "green" puts "緑です" when "blue" puts "青です" when "pink", "yellow" puts "ピンクか緑です" else puts "知らない色です" end # 条件演算子 puts color == "blue" ? "青です" : "青ではありません"
ループ
# ----- while ----- i = 0 while i < 5 puts i i += 1 end # ----- until ----- j = 0 until j > 5 puts j j += 1 end # ----- for ----- for lang in ["Ruby", "PHP", "Perl", "Python", "Java"] do puts "I like #{lang}!" end for k in (1..10) puts k end # ----- times ----- 3.times do puts "I like Ruby!" end 3.times { puts "I like Ruby!" } 3.times do |l| # o始まり puts "#{l}" end 3.times {|l| puts "#{l}" } # ----- each ----- ["Ruby", "PHP", "Perl", "Python", "Java"].each do |lang| puts "I like #{lang}!" end { lang1: "Ruby", lang2: "PHP", lang3: "Perl", lang4: "Python", lang5: "Java" }.each do |index, lang| puts "#{index}: #{lang}!" end # ----- loop ----- m = 0 loop do puts m += 1 break if m > 5 end