「基本的な構文」の編集履歴(バックアップ)一覧はこちら

基本的な構文」(2010/01/31 (日) 01:23:54) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

* 基本的な構文 ** 命名規則 : 定数 | 大文字で始まる : 変数 | 小文字で始まる *** 慣習 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の面白いところ:クラスとは「クラスオブジェクトの定数」にしか過ぎない。 *** クラスオブジェクト?? クラス定義に従ってインスタンスを生成できる&bold(){インスタンス工場}のこと。 *** ポイント + 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でフツーにできる事はできるようになる! ----
* 基本的な構文 ** 命名規則 : 定数 | 大文字で始まる : 変数 | 小文字で始まる *** 慣習 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の面白いところ:クラスとは「クラスオブジェクトの定数」にしか過ぎない。 *** クラスオブジェクト?? クラス定義に従ってインスタンスを生成できる&bold(){インスタンス工場}のこと。 *** ポイント + 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でフツーにできる事はできるようになる! ----

表示オプション

横に並べて表示:
変化行の前後のみ表示: