Rubyの基礎知識
Rubyとは
説明
手軽なオブジェクト指向プログラミングを実現するための種々の機能を持つオブジェクト指向スクリプト言語
Rubyの特徴
- シンプルな文法
- 普通のオブジェクト指向機能(クラス、メソッドコールなど)
- 特殊なオブジェクト指向機能(Mixin、特異メソッドなど)
- 演算子オーバーロード
- 例外処理機能
- イテレータとクロージャ
- ガーベージコレクタ
- ダイナミックローディング(アーキテクチャによる)
- 多くのUNIX上で動くだけでなく、DOSやWindows、Mac、BeOSなどの上でも動く
変数
特徴
- JavaScriptと異なり、varは不要
- セミコロン(;)も不要
- 予約語は、自動的にダブルクォートで囲まれる
例
name = "Railsドキュメント"
数値と文字列
特徴
- 数値や文字列はすべてオブジェクトとして扱われる
- 変数の型は自動的に変換されるので意識する必要はない
数値
- 足し算やかけ算の結果、Fixnumの値を超えた場合は、自動的にBignumに変換
- 整数値と小数値を計算した場合は、自動的にFloatに変換
- 数値を表すオブジェクトのクラスは3つ
クラス | 説明 |
---|---|
Fixnum | 変数に整数を代入 |
Bignum | 非常に大きな整数を代入 |
Float | 小数点付きの数字を代入 |
文字列
- 文字列をシングルクォート(‘)やダブルクォート(“)で囲むと、オブジェクトができる
- 「+」で連結
- ダブルクォート内の、「#{}」は、式として評価された値が展開
- ダブルクォート内の特殊文字
エスケープシーケンス | 説明 |
---|---|
\a | ベル |
\b | バックスペース |
\e | エスケープ |
\f | 改行ページ |
\n | 改行 |
\r | 復帰 |
\t | 水平タブ |
\v | 垂直タブ |
\” | ダブルクォート(“) |
\’ | シングルクォート(‘) |
\ | ¥マーク |
数値と文字列の変換
数字から文字列
.to_s
文字列から数字
.to_i
配列について
配列とは
連番が付けられた変数の集合体
sampleメソッド
使い方
配列.sample(個数)
説明
配列からランダムにn個の要素を取り出す
例
[1, 2, 3, 4, 5, 6, 7].sample(2)
# [3, 1]
keep_ifメソッド
使い方
配列.keep_if {|arr| 条件式 }
説明
配列から、条件を満たさない要素を削除
例
["ipad", "iPhone", "ipod", "iTunes", "Android"].keep_if {|i| i =~ /^i/ }
# ["ipad", "iPhone", "ipod", "iTunes"]
repeated_combinationメソッド
使い方
配列.repeated_combination(個数) {|arr| block }
説明
配列から、任意の○個の重複の組み合わせを列挙
repeated_permutationメソッド
使い方
配列.repeated_permutation(個数) {|arr| block }
説明
配列から、任意の○個からなる重複順列を列挙
rotateメソッド
使い方
配列.rotate(個数)
説明
配列から、要素を回転させるようにして要素をずらした配列
ハッシュについて
説明
キーを使って、複数のオブジェクトへの参照をまとめて管理するオブジェクト
条件分岐
説明
条件によって実行する処置を分ける
比較演算子
演算子 | 説明 |
== | 等しい |
=== | 等しい |
!= | 等しくない |
> | より大きい |
>= | 等しいか、より大きい |
< | より小さい |
<= | 等しいか、より小さい |
<=> | 小さいときはー1、等しいときは0、大きいときは1 |
=~ | 世紀表現のパターンマッチ(一致) |
!~ | 世紀表現のパターンマッチ(一致しない) |
論理演算子
演算子 | 説明 |
---|---|
&& | かつ |
and | かつ |
| | | または |
or | または |
! | ではない |
not | ではない |
if
if 条件式1 (then)
elsif 条件式2 (then)
else
end
unless
unless 条件式1 (then)
else
end
三項演算子
条件1 ? 正しいとき : 正しくないとき
case
case
when 条件式1 (then)
when 条件式2 (then)
else
end
case 変数
when 式1 (then)
when 式2 (then)
else
end
while
whike 条件式 do
end
ブロックとイテレータ
イテレータ
繰り返し処理に使うメソッド
数字.time do |i|
end
each
配列やハッシュの要素数だけ繰り返す
配列
配列.each do |i|
end
ハッシュ
ハッシュ.each do |key, value|
end
オブジェクトについて
説明
データと手続きをまとめたもの
クラスとインスタンス
- クラスはオブジェクトの設計図
- インスタンスは、設計図に基づいて作成されたオブジェクト
オブジェクトの作成
クラス.new
メソッドの呼び出し制限
レベル | 説明 |
---|---|
public | メソッドはどこからでも呼び出せる |
protected | 同じクラスやサブクラス内のメソッドの中だけ呼び出せる |
private | 同じクラスやサブクラス内のメソッドの中だけ呼び出せる |
シンボルについて
説明
プログラム中のどこでも同一のオブジェクトを名前で表せるようにしたもの
使い方
:シンボル名
シンボルと文字列の使い分け
Railsでのシンボルと文字列の個人的な使い分け
- コントローラやアクションの指定は文字列
- 上記以外で識別子的に使う場合はシンボル
- それ以外は文字列
正規表現
使い方
/○○/で囲んで記述
オプション
オプション | 説明 |
---|---|
i | 大文字小文字の区別しない |
o | 一度だけ式展開 |
x | #をコメントと見なす |
m | 複数行モード |
Rubyの便利なメソッド
配列
配列をランダムに取り出す
[:aaa, :bbb, :ccc].rand
配列を分割
[1, 2, 3, 4, 5].split(3)
配列をグループ化
%w(1 2 3 4 5).in_groups_of(4){ |g| p g }
特定のキーからハッシュを作る
User.find(:all).index_by(&:login)
ハッシュ
ハッシュの差を取得
{one: 1, two: 2, three: 3 }.diff(one: 0, two: 2, four: 4)
ハッシュから特定の値を取り除く
hash.except(:controller, :action)
ハッシュから特定の値だけど取り出す
hash.slice(:title, :body)
元のハッシュの内容を優先してマージ
hash.reverse_merge(template: "entries/list")