編集中
メモ
- Rubyではfalseとnilが「偽」、それ以外が「真」として扱われます。
- [1,2,3] << 4 → 配列の追加(結果は[1,2,3,4])
- source_location() → メソッドの定義場所を調べられる
- nextは繰り返しの中で処理をスキップし、繰り返し処理を続行する block内で使うとblockをスキップする
- Rubyではcallerメソッドで呼び出し元がわかる
- メソッド全体の例外を拾う場合はbeginを書かない
- ||=の使い方
- ||演算子のいろんな使い方
- !!の意味
用語
名称 | 説明 | 備考 |
---|---|---|
rbenv | 複数のRubyのバージョンを管理するもの | |
bundler | Gemを扱うパッケージの個別の依存関係を解決してくれて、インストールしてくるもの | |
Gem | Rubyのパッケージ管理ツールの事。また各ライブラリのことも指す | |
ブロック | do~end(もしくは{~})で囲われた、引数となるためのカタマリ。 引数として渡されたブロックは、yieldによって実行される |
|
RubyForge | Ruby版のSourceForgeのようなモノ 現在はgithubに移行 | |
破壊的メソッド | レシーバにあたるオブジェクトの値そのものを変更してしまうメソッド | |
def initialize end |
コンストラクタ | |
require | ファイル読み込み | 標準ライブラリは require 'libcdb' ライブラリ名 外部自作ファイルはrequire_relative 'hoge' require './hoge' |
var = object || obeject | 左のobjectが真なら左を返す | |
self.class.hoge | クラスメソッドをインスタンスメソッドから呼び出す際に使用する | |
#{...} | 式展開 | |
オブジェクト.class.name | オブジェクトの型を調べる | |
self | カレントオブジェクト(インスタンス)を指す、特殊な変数 | self と付けないとローカル変数への代入となってしまうので、 self を明示的に付ける。 |
カレントオブジェクト | メソッドなどを実行しているオブジェクトのこと | student2 = Student.new student2.func (student2.funcのこと) |
<< | <<演算子(メソッド)は、左辺の配列(レシーバ)の末尾に右辺のオブジェクトを要素として加えます。 レシーバ自身を変更するメソッドです。戻り値はレシーバ自身です。 |
|
:シンボル | 基本シンボルは前置 | ハッシュのキーとしてシンボルを使う際や、 キーワード引数を使う際に、コロン記号「:」を後置 シンボルは「-」が使えない |
ハッシュ | ハッシュの入れ方 hash = {ruby:"rails",python:"Django",php:"cakePHP"} ハッシュの中身 {:ruby=>"rails", :python=>"Django", :php=>"cakePHP"} |
多次元配列 {"DM"=>{1=>["0001"]}} |
真偽値 | Rubyでは、falseとnilを除くすべての値が真です つまり、0は、真です |
|
変数
-
Ruby では、以下は単なる慣習ではなく、名前によりスコープが決定
- ローカル変数 : 先頭が小文字 or _
- グローバル変数 : 先頭が $
- インスタンス変数: 先頭が @
- クラス変数 : 先頭が @@
- 定数 : 先頭が大文字
-
以下は慣習
- 変数名は、xxx_xxx_xxx のような、小文字を _ でつなぐ形
-
擬似変数
- selfやtrueなど詳細は下記リンク
- 変数と定数
メソッド(関数)
- クラスメソッド
#定義
class クラス名
def クラス名.メソッド名(引数)
end
#以下のようにも定義できる
def self.メソッド名(引数)
end
end
#呼び出し
クラス名.メソッド名
#::を使ってもOK
クラス名::メソッド名
- インスタンスメソッド
#定義
class クラス名
def メソッド名(引数)
end
end
#呼び出し
変数名 = クラス名.new
変数名.メソッド名(引数)
- ブロック付きメソッド呼び出し
- Ruby ではブロック付きメソッド呼び出しを用いるコードが好まれることが多い
- ブロック付きメソッドとyieldは、コールバック関数を簡単に書けるようにしたもの
- yieldがブロックを処理
- 【初心者向け】ブロック付きメソッドとは
#定義
def block_method
yield "a"
yield "b"
yield "c"
end
#呼び出し
block_method do |x|
puts x
end
#定義
def plus(x, y)
yield x, y
end
#呼び出し
plus(1, 1) do |a, b|
puts a+b
end
-
以下は慣習
- メソッド名は、xxx_xxx_xxx のような、小文字を _ でつなぐ形
- ?で終わるメソッドは、真偽値を返す
- !で終わるメソッドは、破壊的メソッド
-
その他
- 関数は引数がない場合()を省略できる
- 引数の最後がハッシュの場合、{}を省略できる
- メソッドの上位置にpublicもしくはprivateと記載すると、下側はそれに反映される
- returnがない場合、メソッドの中の一番最後の式がメソッドの戻り値となる
クラス名 | メソッド名 | 機能説明 |
---|---|---|
String | gsub | 正規表現にマッチした部分をすべて変換するメソッド |
String | chomp | 文字列の末尾の改行文字を取り除いた新しい文字列を返します |
Dir | grob | 任意の文字列を含むファイルを取得 |
Module
機能
メソッド
定数
使い方
名前空間
多重継承実現
include
モジュールに定義されたメソッドをクラスにインスタンスメソッドとして取り込む
モジュール内で宣言されたクラスメソッドは
クラスと同様にモジュールから直接呼び出すことができます。
module Mod
def self.hello
puts 'Hello'
end
end
Mod.hello #=> "Hello"
- 以下は慣習
- モジュール名は、キャメルケース
例外
begin
# 例外を投げるのは、raise メッセージ(or クラス)
rescue => 変数
# 例外時の処理
ensure
# 必ず実行される
end
ライブラリ
-
Rack
- RubyでWebサーバーを立ち上げるためのインターフェース
- Rackとは何か
-
WEBrick
- 単純なHTTP Webサーバの機能を提供する
-
rake
- Rake というコマンドラインツールを扱うライブラリ
- 別途詳細
Rake
- Rakeとは
- Rubyで記述されたbuildツールでMakeやAnt,Mavenと同種のツール
- ファイル名は拡張子無しの「Rakefile」が多い
拡張子ありのsample.rakeやsample.rbの場合もある - ファイルタスクには、対応するファイルが作られていないときか、依存してるファイルが更新されたときの
どちらかのときにしか実行されないっていう特徴がある。
#定義
task タスク名 , [パラメータ名, パラメータ名 ... ] => [事前タスク名,事前タスク名 ... ] do
# アクション
puts 'hello'
end
#呼び出し
rake タスク名[パラメーター名]
ファイルタスク
#定義
rake タスク名 => "index.html"
file "index.html" do
end
#呼び出し
rake タスク名
RubyMine
RubyMine 公式ショートカット一覧 (日本語版) Mac
コマンド | 説明 |
---|---|
⌘ + B | コードジャンプ |
⌘ + [ | 戻る |
shift 2回 | どこでも検索 |
コード補完 | 明示的に示していなければコード補完はしてくれない |
⌘ + Shift + F | テキスト検索 |
⌘ + Shift + o | ファイル検索 |
Shift + # | 式展開 |
option + F7 | ソース内で他に使ってるところを検索してくれる |
⌘ + / | コメントアウト |
デバック
参照リンク
- 入門
Rubyメモ
RubyのModuleの使い方とはいった
Ruby block/proc/lambdaの使いどころ
Rubyで使われる記号の意味(正規表現の複雑な記号は除く)
[初心者向け] RubyやRailsでリファクタリングに使えそうなイディオムとか便利メソッドとか