Ruby 基本まとめ
2013.12.12
この記事は最終更新日から1年以上が経過しています。
ざっとRubyに関する基礎的な部分をまとめてみました。
Ruby基本
ruby実行
ruby ファイル名
irb
irb(Interactive Ruby)起動
irb
irb(Interactive Ruby)終了
exit
表示メソッド
puts
数値、文字列変換
to string(文字列へ)
.to_s
to integer (数値へ)
.to_i
to flort(浮動小数点へ)
.to_f
オブジェクト
オブジェクトのクラスを調べる
.class
オブジェクトのスーパークラスを調べる
.superclass
インスタンスを調べる
.instance_of?(String)
.instance_of?(Fixnum)
空かどうかを調べる
.empty?
オブジェクトIDを調べる
.object_id
オブジェクトをコピー
.clone
オブジェクトIDが同じか
.equal?
中身を比較
==
Rubyの変数
グローバル変数 | $foo |
インスタンス変数 | @foo |
クラス変数 | @@foo |
ローカル変数 | foo |
rubyの予約語
BEGIN | END | alias | and | begin |
break | case | class | def | defined? |
do | else | elseif | end | ensure |
false | for | if | in | module |
next | nil | not | or | redo |
rescue | retry | return | self | super |
then | true | undef | unless | until |
when | while | yield |
定数は全て大文字
ADMIN
制御構造
if文
if 条件 then 条件が真の時に実行する処理 end
if 条件 then 条件が真の時に実行する処理 else 条件が偽の時に実行する処理 end
unless文
unless 条件 then 条件が偽の時に実行する処理 else 条件が真の時に実行する処理 end
if 条件1 && 条件2 then
条件が真の時に実行する処理
end
case文
case 比較するオブジェクト
when 値1 then 値1と一致した時に実行する処理 when 値2 then 値2と一致した時に実行する処理 when 値3 then 値3と一致した時に実行する処理 else どの値にも一致しないときに実行する処理 end
繰り返し処理
while文 while 条件 do 条件が”真”の時に繰り返す処理 end
sleep
指定時間待機
until文
until 条件 do 条件が”偽”の時に繰り返す処理 end
for文
for 変数 in オブジェクト do 繰り返し処理 end
timesメソッド で指定可数繰り返し
整数.times do |変数| 繰り返す処理 end
timesメソッド他の記述
整数.times { |変数| 繰り返す処理 }
upto,down toメソッド
times | integer |
upto | integer |
downto | integer |
step | Numeric |
uptoメソッド
整数.upto(max) do |変数| 繰り返す処理 end
downtoメソッド
整数.downto(min) do |変数| 繰り返す処理 end
stepメソッド
整数.step(limit, step) do |変数| 繰り返す処理 end
eachメソッド
オブジェクト.each do |変数| 繰り返す処理 end
ループ終了
break
example
dollar = 102 i = 1 loop { rate = i * dollar if rate >= 5000 break end print i, “$ ==> “, <span style="font-family: Arial, 'Arial New', 'MS P ゴシック', sans-serif;">rate</span>, “Yen¥n"</p> i = i + 1 }
rubyファイルからの rubyの呼び出し
win
#!C:/ruby/bin/ruby
mac
#!/usr/bin/ruby
コマンドラインで実行
$ ./hoge.rb
文字コード指定
#!/usr/bin/ruby -Ks
EUC | -Ke |
Shift-JIS | -Ks |
UTF-8 | -Ku |
制御文字
¥b | バックスペース |
¥e | エスケープ |
¥f | 改ページ |
¥n | 改行 |
¥r | 復帰 |
¥s | 半角スペース |
¥t | タブ |
¥¥ | ¥ |
文字列中で変数、式を使用
#{ 変数 }
example
who = “たかやま" print “こんにちは、”, who, ”さん”
who = “たかやま" print “こんにちは、#{who}さん”
計算式も可能
print “計算:20 × 20 = #{20*20}です”
ファイル操作
ファイル操作
File.open(“ファイル名”, “モード")
読み込みのみ
File.open(“index.txt”, “r”)
r | 読み込み |
r+ | 読み込みと書き込み |
w | 新規に作成して書き込み |
w+ | 新規に作成して読み込みと書き込み |
a | 追加で書き込み |
a+ | 追加で読み込みと書き込み |
f = File.open(“index.txt")
まとめて読み込み
f.read
標準出力
print f.read
読み込み後は閉じる
f.close
1行ずつ読み込み
f = File.open(“index.txt”) f.each{|line| print line } f.close
配列とハッシュ
配列
foo = []
example
#!/usr/bin/ruby arr = [“web帳”, “takayama”,”boy"] print “このサイトは”, arr[0], “です¥n” print “作者は”, arr[1], “で¥n” print arr[1], “は”, arr[2], “である¥n”
fruit = [“みかん”,”りんご”,”なし”,”ぶどう”,”もも"] puts fruit [0..3] puts fruit [1, 3]
数を調べる
puts fruit.size
puts fruit.length
コマンドライン引数取得
ARGV
example
sample.rb one two
#!/usr/bin/ruby # 1〜3番目の引数を表示 puts ARGV[0] puts ARGV[1] puts ARGV[2]
全ての引数を表示
puts ARGV
繰り返し処理での表示
ARGV .each{|arg| puts arg puts “**************" }
ファイルコピー
example
f1 = File.open(ARGV[0]) f2 = File.open(ARGV[1], “w") data = f1.read f2.print data f1.close f2.close
ハッシュ
連想配列
キー(key)と値(value)
キー => 値
animal = {
“cat” => “たま”,
“dog” => “ぽち”,
“bird” => “とりんどる”
}
key取得
.keys
value取得
.values
フェッチで取り出す事も可能
.fetch
eachでの繰り返しでの取得
.each_key{|key| puts “#{key}" }
配列のハッシュ
animal = { “dog” => [“ぽち”,”じろう”,”ごま”], “cat” => [“たま”,”ごろう”,”ひな”] }
ハッシュの配列
student = [ { “no” => 1, “name” => “たかやま”, “blood” => “O”}, { “no” => 1, “name” => “たなか”, “blood” => “A”} ]
ハッシュのハッシュ
band = { “1” => {“name” => “たかやま”, “part” => “guitar”}, “2” => {“name” => “たなか”, “part” => “vocal”}, “3” => {“name” => “なかた”, “part” => “bass”} }
正規表現
マッチするかは~(チルダ)を用いて判別
正規表現オブジェクト =~ 文字列オブジェクト
/^How/ =~ “How are you? " => 0
/sad/ =~ “I am sad. " => 5
主なメタ文字
. | 任意の1文字にマッチ |
* | 0回以上の繰り返しにマッチ |
+ | 1回以上の繰り返しにマッチ |
? | 0回または1回の繰り返しにマッチ |
{} | 指定した範囲の繰り返しにマッチ |
() | グループ |
[] | 文字クラス |
^ | 行頭にマッチ |
$ | 行末にマッチ |
| | いずれかにマッチ |
{m} | m回にマッチ |
{m,} | m回以上にマッチ |
{m,n} | m回以上,n回以下にマッチ |
選択
/apple|orange/
グループ化
/(sing){2}/ =~ "singapplesongsingsingsong" => 13
後方参照
正規表現グループによる後方参照
/5(.)7(.)/ =~ "123456788" => 4
$1 => "6"
$2 => "8"
文字クラスの主な略記法
¥w | アルファベットと数字 |
¥W | アルファベットと数字以外 |
¥s | 空白文字 |
¥S | 空白文字以外 |
¥d | 数字 |
¥D | 数字以外 |
¥b | 単語の境界 |
¥B | 単語の境界以外 |
¥A | 文字列の最初 |
¥Z | 文字列の最後 |
日本語の正規表現
s | Shift-JIS |
e | EUC-JP |
u | UTF-8 |
n | 文字コードなし |
文字を置換
文字列.sub(/パターン/,”置換文字列")
すべて置換
.gsub
puts str.gsub(/ウェブ/s,”Web")
メソッド
メソッド定義
def メソッド名 処理 ... end
引数
def hello who 処理.. end
または
def hello(who) 処理.. end
クラス定義
class クラス名 クラスの定義... endf
モジュール
モジュールはインスタンスを作れない includeしての利用となる。( Mix-in)
module モジュール名 モジュール定義 end
ライブラリの読み込み
require “hogege"
以上になりますー。