初めに
春からRubyのプロジェクトをやるということで簡単な文法をメモった
基礎的な部分のみだが、自分用のメモ
環境
- ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-darwin14]
- irb 0.9.6(09/06/30)
- Mac OS Yosemite 10.10.2
試しに
簡単なスクリプト書いてみた
信頼性を計算してくれるモジュールです。まったく使いドコロがない
信頼性計算モジュール
使い方
require "../tools/relability"
# HOW TO USE
r = Relability::Measure.new(31, 40, 4)
p r.mtbf
=> 176.0
p r.mttr
=> 10
p r.capacity_rate
=> 0.946236559139785
四則演算
ざっと
# 足す
70 + 80
=> 150
# 引く
apple = 40 - 40
apple.zero?
=> true
# 掛ける
banana = 3 * 2
banana.nonzero?
=> 6
# 割る
100 / 3
=> 33
# 余り
100 % 3
=> 1
# 乗算
10 ** 3
=> 1000
日付
いろんな言語での悩みの種ですねえ
# 簡単に現時刻をとれる
now = Time.now
# 指定して取る
now.strftime("%Y-%m-%d-%^A")
=> "2015-03-28-SATURDAY"
# 年月日もとれる
now.year
now.month
now.day
now.to_a # 配列にしても要素を抜ける
# 曜日の判定もできる
now.wednesday?
now.sunday?
※本日を取る場合は以下で取れます
require 'date'
today = Date.today
変換
たまに
# 文字列
1.to_s
=> "1"
# 進数とか
10.to_s 2
=> "1010"
10.to_s 8
=> "12"
10.to_s 16
=> "a"
# 末尾の1文字を消す
"hoger".chop
=> "hoge"
# 重複文字を消す
"hoooooge".squeeze
=> "hoge"
# 大文字小文字
"hoge".upcase
=> "HOGE"
"HOGE".downcase
=> "hoge"
"hoge".capitalize
=> "Hoge"
# 置換
"hogehogefugahoge".gsub /hoge[fuga]+/, "りんご"
=> "hogeりんごhoge"
# 配列系
"たかし|けんじ|すすむ|まさお".split '|'
=> ["たかし", "けんじ", "すすむ", "まさお"]
チェック
少し
# 文字あるかチェック
"hoge".empty?
=> false
"hoge".include? "ho"
=> true
# ケータイ、固定電話番号チェック
/^(\d{2}-\d{4}|\d{3}-\d{3}|\d{3}-\d{4})-\d{4}$/ === "090-090-0909"
=> true
Enumerable
列挙系から抜き出す時のメモ
# 列挙の中の偶数を足す
["けんじ", 99, "まさお", 52, "しろう", 40, "たかし", 80].grep(Integer).select { |v| v.even? }.inject :+
=> 172
# たかしとかいらない時
["けんじ", 100, "まさお", 50, "しろう", 40, "たかし", 80].grep(Integer)
=> [100, 50, 40, 80]
配列
便利ゆえに破壊的メソッドもあるので注意して使いたい
array = [10,20,30,40,50]
array.push 60
=> [10, 20, 30, 40, 50, 60]
array.pop 2
=> [50, 60]
array.delete 10
=> 10
array.join "たかし"
=> "20たかし30たかし40"
ループ
よく使います
# インデックスもつけたい
%w(たかし けんじ まさお しろう).each_with_index do |name, i|
p "#{i}: #{name}"
end
"0: たかし"
"1: けんじ"
"2: まさお"
"3: しろう"
=> ["たかし", "けんじ", "まさお", "しろう"]
# 回数指定
5.times do |n|
p n
end
0
1
2
3
4
=> 5
宇宙船演算子
<=>のことっす
# 右辺がでかい
100 <=> 500
=> -1
# 左右辺同じ
100 <=> 100
=> 0
# 左辺がでかい
500 <=> 100
=> 1
hash
なんでもかんでもhashにするのはよくないので
Effective-Rubyにもあるように、Structを使うのも検討してみるといいと思います
hoge = {test: "たかし", fuga: "けんじ"}
=> {:test=>"たかし", :fuga=>"けんじ"}
# キー
hoge[:test]
=> "たかし"
# キー全部
hoge.keys
=> [:test, :fuga]
# 値
hoge.values
=> ["たかし", "けんじ"]
# 配列
hoge.to_a
=> [[:test, "たかし"], [:fuga, "けんじ"]]
# ループして出力
hoge.each_with_index {|v, i| p "#{i}: #{v}" }
"0: [:test, \"たかし\"]"
"1: [:fuga, \"けんじ\"]"
=> {:test=>"たかし", :fuga=>"けんじ"}
終わりに
よく使うもの、というよりは基礎的なものを抜き出してまとめた
調べて使うよりは自分のところにメモって行った方が早いということもあり、何かあればこれに追記していく