LoginSignup
17
16

More than 5 years have passed since last update.

Rubyの知っておきたい文法メモ

Last updated at Posted at 2015-03-28

初めに

春からRubyのプロジェクトをやるということで簡単な文法をメモった
基礎的な部分のみだが、自分用のメモ :rage3:

環境

  • 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

日付

いろんな言語での悩みの種ですねえ :hurtrealbad:

# 簡単に現時刻をとれる
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=>"けんじ"}

終わりに

よく使うもの、というよりは基礎的なものを抜き出してまとめた
調べて使うよりは自分のところにメモって行った方が早いということもあり、何かあればこれに追記していく

17
16
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
16