Railsドキュメント

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")