Contents
変数
変数の命名規則
スネークケースで書く。
スネークケース→全て小文字で単語間は「_」で結合する。
例)test_hensu
参考:キャメルケース→「_」は使わず、2単語目以降の最初の文字は大文字で始める。
例)testHensu
文字列を変数に格納する
ダブルクォーテーションで囲って格納する。
1 |
test_hensu = "hello ¥n world" |
シングルクォーテーションで囲っても変数へ格納可能だが、上記の改行文字など特殊文字を有効にしたい場合、ダブルクォーテーションで囲う必要がある。
またダブルクォーテーションを使うと変数の結合が可能。変数は以下のように「#{}」で囲う。
1 2 3 |
test_hensu = "world" test_hensu2 = "hello #{test_hensu}" puts test_hensu2 |
上記を実行すると「hello world」と表示される。
数値と文字列の暗黙的変換
Rubyでは数値と文字列の暗黙的変換はされない。
to_i(整数へ変換)
to_f(少数ありの数値へ変換)
to_s(文字列へ変換)
メソッドを使って明示的に変換する必要がある。
配列
配列の定義
こんな感じに定義する
1 |
a = [1,2,3] |
要素の追加
4番目に要素を追加する
1 |
a[3] = 4 |
こんな感じ。インデックスは0から始まるので4番目のインデックスは「3」となる
次に配列の最後に要素を追加する
1 |
a << 5 |
要素の削除
特定のインデックスの要素を削除する場合はdelete_atメソッドを使用する
1 |
delete1_at(1) |
メソッド
メソッドの命名規則
変数同様にスネークケースで書く。
メソッドの戻り値
メソッドの定義に戻り値はない。
return文はあるがあまり使わない。
最後に実行された評価された式が戻り値となる。
?で終わるメソッド名
真偽値を返すメソッドで使う
1 |
''.empry? |
!で終わるメソッド名
使用する際に注意が必要なメソッドで使う
エイリアスメソッド
全く同じメソッドに複数の名前が付いている。
例)Stringクラスのlengthメソッドとsizeメソッド
クラス
クラスの命名規則
キャメルケースで書く
1 2 |
class User end |
インスタンス変数
インスタンス内部で共有される変数名は先頭に「@」をつける
1 2 3 4 5 |
class User def initialize(name) @name = name end end |
ゲッター、セッターはRubyではアクセサメソッドという
1 2 3 4 5 6 |
class User attr_accessor :name def initialize(name) @name = name end end |
インスタンス変数はクラス外部から参照・更新ができない。(他の言語で言うこところのプライベート変数)これを可能にするのが、アクセサメソッド(他の言語で言うところのゲッター、セッター)
ちなみに、参照専用にしたい場合は「attr_accessor」を「attr_reader」とする。
更新専用にしたい場合は「attr_accessor」を「attr_writer」とする。
クラスメソッド
クラスを指定して実行できるメソッド。
(インスタンスメソッドはインスタンスを指定してメソッドを実行する)
1 2 3 4 5 6 7 |
class User def self.name "name" end end User.name |
定数
大文字のアルファベットを使用し、単語間は「_」でつなぐ
クラスの継承
1 2 |
class サブクラス < スーパークラス end |
モジュール
書き方
インスタンスメソッドの追加
1 2 3 4 5 6 |
module モジュール名 end class クラス名 include モジュール名 end |
クラスメソッド の追加
1 2 3 4 5 6 |
module モジュール名 end class クラス名 extend モジュール名 end |
用途
継承を使わずにクラスにメソッドを追加する
例外処理
書き方
1 2 3 4 5 6 7 |
begin #処理 rescue #処理で例外発生時の処理 ensure #例外の有無にかかわらず実行する処理 end |
例外の発生させる方法
意図的に例外を発生させるには「raise」を使う
1 |
raise "例外メッセージ" |
NULL
NULLをRubyでは「nil」と書く
真偽値
Rubyでは
falseまたはnil:偽
上記以外:真
となる。「nil」が偽となる点に要注意。
%記法
%記法と呼ばれるものがある。