mozyのかきおき

mozyの読書感想文や思考置き場

Ruby 初めのいーっぽ 【速習編】

Ruby 初めのいっーぽ

MENTAのメンティさん向けの速習メモ

全てがオブジェクト

Rubyオブジェクト指向言語のため、全てがオブジェクト

  • 文字列、配列、数値やnil、trueとかも含めてぜーんぶオブジェクト
  • オブジェクト.メソッド 引数 みたいな感じでメソッドを呼び出すことができる

例: 文字列 1.to_s, nil nil.to_s などなど

変数名は小文字のスネークケースで

例: special_price = 200 のような感じで _ で小文字を区切る

  • 変数名には、小文字アルファベットと数字、アンダースコアなどが使える
  • 数字から始まる変数名は使えない
  • 漢字とかひらがなも使えるが一般的ではない

文字列はシングル or ダブルクオーテーションで囲む

  • ダブルクオーテーションで囲むと式展開できるようになる
    • puts "hello #{name}" のようにname の内容を展開できる

数値

  • アンダースコアを含めることができて無視されるので桁区切りに便利
    • 1_0001000 と認識される
  • 他の言語でいう、インクリメントなどの ++, -- はない
    • +=, -= はあるので使える
    • 例: n += 1 など
  • 丸め誤差に注意
    • 0.1 * 0.3 == 0.3 は falseになる
    • rational クラスを使うといい
    • 例: 0.1r * 0.3r == 0.3 は true

真偽値

  • false または nil は偽
  • それ以外は全て真 となる
    • nil が偽になるメリットは条件分岐がスッキリ書けるところにある

if文

  • elseifelsif となるので注意
  • elsif や elseは省略可能
  • 後置if が便利
    • 例: 1日ならポイント五倍 point *= 5 if day == 1 てな感じ

メソッドの定義

  • 戻り値
    • return は使わない方が主流
    • 最後に評価された式がメソッドの戻り値となる
    • return はメソッドを途中で抜けたいときに使われることが多い
    • 引数がない場合は メソッド名の後に() をつけない方が主流

文字列

  • %記法を使うとシングル ダブルクオーテーションをエスケープしなくても使える
  • %q!はシングル %Q!はダブルクオーテーションで囲んだのと同じくなる
    • ! 以外でも ? とか ^ とか任意の記号を区切り文字に使える
      • かっこを区切り文字に使った時は対応する閉じ括弧になる
  • 例: puts %q! He said, "Hello."! => He said, "Hello."
  • 例: puts %Q< #{name} said, "Hello."> => Taro said, "Hello."

unless文

  • if文と反対の意味をもつ文
    • ただし、elsifに対応する elsunless は存在しない
  • 条件文が偽になった時だけ処理を実行する

例: これらは同じ意味

status = 'error'
if status != 'ok'
  '異常'
end
status = 'error'
unless status == 'ok'
  '異常'

case文

  • 複数条件を指定する時は、elsifをなんども書くよりもcase文で書いた方がシンプル
  • when節に複数の値を指定できる
    例:
name = '太郎'
case name 
when '太郎', 'Taro'
  'とっとこハム'
when '次郎', 'Jiro'
  'ラーメン'
else
  '謎だ'
end

三項演算子

  • 式 ? 真だった時の処理 : 偽だった時の処理 と書ける
  • 例: n >= 18 ? '成人やん' : '未成年やん'

requireとload

  • ライブラリなどを読み込む時に requireを使う
    • require ライブラリ名 などと使う
    • 再度 requireを しても読み込み済みのためfalseが返る
  • load を使うとそのファイルを呼ぶごとに毎回指定したファイルを読み込む
    • load ファイル名.rb などと使う
    • load は .rb を省略できない

requireに関連して

  • require_relativeを使うと、パスなどがそのファイルが存在するディレクトリ起点となる
  • requireRubyを実行しているディレクトリがパスの起点となる