基本的な構文
命名規則
- 定数
- 大文字で始まる
- 変数
- 小文字で始まる
慣習
1. クラス名はパスカル記法
class HogeHoge
2. メソッド名、変数名は_区切りの小文字
def hoge_hoge
hoge_hoge = 0
3. 定数名は_区切りの大文字
HOGE_HOGE = "hoge"
変数とシンボル
変数のスコープ
rubyのスコープの思想「最小単位はブロック(not メソッド、not 式)」
rubyの変数の思想「変数のスコープはなるべく局所化しろ」
hoge
スコープ=ブロック・ローカル
@hoge
スコープ=インスタンス
@@hoge
スコープ=クラス
$hoge
スコープ=グローバル
シンボル
:hoge
同名の変数に対してリンクを張っている。
メソッドの定義
引数なし
def bark
end
引数あり
def bark(time)
end
複数の引数あり、初期化付き
def bark(time, voice="ばう")
end
可変長引数
def bark(*voice)
end
メソッドのスコープは基本的にパブリック
クラスの定義
class CurDog << Dog
PEDIGREE = "雑種"
attr_reader :name
def initialize(name)
@name = name
end
def bark(voice="ばう")
p voice
end
def wait
shit
end
def self.cute
p "きゅぅーん"
end
private :shit
def shit
p "ポトリ"
end
end
rubyの面白いところ:クラスとは「クラスオブジェクトの定数」にしか過ぎない。
クラスオブジェクト??
クラス定義に従ってインスタンスを生成できるインスタンス工場のこと。
ポイント
- newは特別なメッセージ。メソッドとして独自定義できない。
- initializeはnewした時に自動で呼ばれるメソッド。引数を加えることができる。
- 継承したい時は << [継承元] を記述する。
- インスタンス変数を公開したい時は、シンボルを使って、attr_accessor、attr_reader、attr_writer を指定する
- メソッドを非公開にしたいときは、シンボルを使って、private、protected を指定する
- クラスメソッド(staticなメソッド)を書くときはself.をメソッド名の前に付ける
- このselfは、じつはクラスオブジェクト自身を指している
慣習
- クエリー系メソッドは、メソッド名の最後を"?"で終える。
- とくにValueObjectで、インスタンスの内容を変更するメソッドは、メソッド名の最後を"!"で終える。
クラス・オブジェクトのインスタンス(メソッド/アトリビュート)へのアクセス
基本は"."を使う
dog = CurDog.new("ポチ")
dog.bark("わおーん")
dog.wait
定数にアクセスする場合は"::"を使う
p CurDog::PEDIGREE
ちなみに
メソッド呼び出し時の"()"は省略もできる
dog = CurDog.new "ポチ"
dog.bark "わおーん"
ただし
引数括りの()は演算式括りの()よりも優先度が高い
math.calc (a-b)+c
なんてやるとハマるから、要注意
制御構文
コメント
# コメント
使える演算子
| ^ & <=> == === =~ > >= < <= << >>
+ - * / % ** ~ +@ -@ [] []= `
=+ =- =* =/ =% =**
= ?: .. ... ! not && and || or ::
- <=>
- 大小比較
- ===
- [左辺]に[右辺]が含まれるか
- =~
- 正規表現で比較
- += -= *= etc
- [左辺]に[右辺]を計算した結果を[左辺]に代入する(自己代入)
ちなみに、++や--は無い。
条件分岐
許容条件
if 条件式 then
実行文
elsif 条件式 then
実行文
else
実行文
end
実行文 if 条件式
否定条件
unless 条件式 then
実行文
else
実行文
end
実行文 unless 条件式
ケース条件
case 評価式
when 式 then
実行文
else
実行文
end
繰り返し
while
while 条件式 do
実行文
end
実行文 while 条件式
until
until 条件式 do
実行文
end
実行文 until 条件式
for
for 変数 in 範囲式 do
実行文
end
じつはfor文はほとんど使わない
10.times do |i|
end
した方が楽だしね
途中で制御を抜ける等
break、next、redo、retryが使える
例外構文
例外を発生させる
raise 例外タイプ
raise 例外タイプ, メッセージ
raise メッセージ
例外ブロック
begin
実行文
rescue 例外タイプ => 変数 then
レスキュー文
else
一般的なレスキュー文
ensure
クローズ文
end
ほかのファイルを組み込む
組み込みたい位置で
require 'ファイル名'
require 'ディレクトリ/ファイル名'
拡張子".rb"は不要。
基本的には、カレントディレクトリからの相対パスで指定する。
ただし、gemsでインストールしたライブラリの場合、たいていはライブラリ名だけで大丈夫。
そのかわり、次のrequireを必ず入れること。
require 'rubygems'
シンタックス・シュガー
Rubyは記述を簡便にするため、インスタンス生成に関するシンタックス・シュガーを用意している。
Arrayのインスタンス生成
array = [val1, val2]
Hashのインスタンス生成
hash = {key1=>val1, key2=>val2}
Stringのインスタンス生成
string = 'ruby'
Regexpのインスタンス生成
regexp = /ruby/
Fixnumのインスタンス生成
num = 1
Floatのインスタンス生成
float = 0.1
ここまでできたら
Javaでフツーにできる事はできるようになる!
最終更新:2010年01月31日 01:23