第4章について
この章では主にRubyのメソッド、クラスについて紹介している。Rails風となっているがRails特有のメソッドもあるのでRubyで同じようにが使えるとは限らないが、RailsにおけるRubyの使い方について学習した。なおシングルクオートとダブルクオートの違いや他と共通するような簡単な言語の仕様などについては省略する。
目次
1.ヘルパーについて
2.rails console
3.rubyのクラス
4.rubyのメソッドやシンボル
5.おまけ
#1. ヘルパーについて
Railsにおいてビューで使えるような関数を新規で作成する(カスタムヘルパー)にはapp/helpers配下にある〇〇.helper.rbに関数を定義する。もし仮に全てのページで使用するようなヘルパーを作るのならapplication_helper.rbに、StaticPagesコントローラ用のヘルパーを作るのならstatic_pages.helper.rbにヘルパーの内容を書く。
ちなみにRubyでは関数の引数は型宣言しなくても使用することができる。
#2. rails console
Railsアプリケーションを対話的に操作できるコマンドラインツール。
Rails consoleを使うとちょっとしたコードを試したり、データベースとのやりとりをここでしたりと開発において便利なツールとなっている。
Rails consoleを使う際デフォルトではdevelopment環境になっているがrails console -e (developmentかtestかproduction)
のようにオプションに-e(--environment)を指定することで起動する環境を指定することができる。
また、そのままconsoleを使ってしまうとデータが変更できてしまうのでオプションに-s(--sandbox)を付けることデータを変更することなくコードを試すことができる。
#3. rubyのクラス
Rubyではnilを含めてあらゆるものがオブジェクトとして扱われる。
例: String < Object < BasicObject
Rubyの全てのクラスは最終的にはBasicObjectを継承している。
またRubyではStringクラスのような基本クラスを拡張することもできる。
class String def palindrome? self = self.reverse end end
*selfはオブジェクト自身。
#4. rubyのメソッドやシンボル
Railsチュートリアルで出てきたメソッドは以下の通り。以下は全てRubyのメソッド。
- to_a ... 配列に変換する
- puts, print ... 文字列や変数などを出力する。(putsは改行あり、printはなし)
- nil? ... オブジェクトが存在するかどうか(そもそも変数が定義されていないなど)
- empty? ... オブジェクトが空かどうか(空白はfalseになる)
- blank? ... オブジェクトが空白かどうか(空白やnilはtrueになる)
- shuffle ... 配列オブジェクトの位置をランダムに移動させる
- reverse ... オブジェクトを左右反対に並べ替える
- split ... 文字列を1文字列切り分けて配列にする。引数()に文字を指定するとその文字を区切り文字とすることができる
- join ... 配列を繋げて一つの文字列にする。引数に文字を指定すると区切り文字と合わせて文字列にすることができる
- push() ... 配列に引数に指定された要素を追加する
- 0..9 .... 0~9までの範囲を指定することができる
- %w [] ... []内にある要素を文字列の配列に変換する
- length ... 文字列の長さを表示する
- each文 ... 配列や範囲オブジェクトの要素を一つずつ変数に取り出して命令を実行する。
オブジェクト.each {|変数| 命令文} あるいは オブジェクト.each do |変数| ~~~ endのように使う。
ハッシュではシンボルを使うことができる。シンボルは{:name => '名前'}か{name: '名前'}のように使う。
Rubyでは配列の要素は数字で指定するが、ハッシュでは文字列を要素に指定することができる。
#5. おまけ
consoleを使っていて気付いた事だがRubyの比較演算子は他の言語と違って厳密な比較はない。むしろ===
は'=='に比べてゆるい比較を行う。===
は左辺がクラスオブジェクトなら右辺がそのクラスのインスタンスであるかどうかを比較する。
以下の記事がわかりやすかったので参考にした。
Rubyの===演算子についてまとめてみた