bobuhiro11's diary

rubyまとめ

20 Mar 2013
[ruby] [まとめ]

ruby(rails)をさわる機会が出来たので,こちらのページを参考に調べてみました.rubylearning.com summary 3までです.それ以後はまだ読めていません.

インデント

タブはスペース2個分

メソッド呼び出し

次のようなメソッドの呼び出しが,許されている.

foobar
foobar()
foobar(a, b, c)
foobar a, b, c

すべてがオブジェクト

integerやstringなどすべてオブジェクトである.しかし,putsやgetsなどのいくつかのメソッドはどこでも使用出来る.それは,これらのメソッドは,rubyカーネルモジュールに含まれているからである.rubyカーネルモジュールは,全てのクラスから参照できるメソッドを定義しているモジュールであり,objectクラスはこのモジュールをインクルードしている.

コメント

#から始まる一行,または=beginと=endで挟んだ行をコメントとする.

真偽

予約語であるfalseやnilのみが偽であり,zeroやnull string,null characterやその他のものはすべて真である.

インクリメント,デクリメント

++や–で表させるインクリメントや,デクリメントは利用出来ない.+=や-=は利用できる.

糖衣構文(シンタックスシュガー)

演算子に見えるものは,すべてメソッド呼び出しである.

コマンド実行

バックチックで囲むと,そのコマンドが実行される.その後,putsメソッドによりコマンドの結果(この場合,ファイルの一覧)が出力される.

puts `ls`

もう一つの方法は,カーネルメソッドのsystemを使うことである.返値は,コマンドが見つかり,適切に実行されるとtrue,コマンドが0以外で終了すればfalse,コマンドが実行できなければnilである.ただし,system内のコマンドの出力先は,rubyのプログラムの出力先と同じである.

system("tar xzf test.tgz")

変数,定数

$から始まるとグローバル変数,小文字またはアンダースコアで始まるとローカル変数である.トップレベル自体が,ローカルスコープを持つ.全てのモジュール,クラス,メソッドの定義がローカルスコープを持つ.@から始まるとインスタンス変数であり,@@から始まるとクラス変数である.大文字から始まると定数である.

コンソール入力

コンソール入力には,putsとchompが便利.STDOUTはプログラムの実際の出力機構である.flushでバッファに溜まっているのを吐き出す.この使い方が推奨されている.getsで一行分のデータを読み込み,chompにより改行コードを除く.

puts "What's your name?"
STDOUT.flush
name = gets.chomp
puts "Hi"+ name + "!!"

Bang(!)メソッド

sort/sort!,upcase/upcase! ,chomp/chomp!,reverse/reverse!などで!がついているものは同じオブジェクトに対して操作を行い同じオブジェクトを返す.!が付いていないものは新しくオブジェクトを作ってそれを返す.

文字列の比較

文字列の比較には==,String.eql?,String.equal?の三種類がある.==とString.eql?は中身の文字列が同じかどうかの比較を行う.String.equal?はオブジェクトが同じかどうかの比較をおこなう.

%wの利用

単語の配列を作るとき,%wというショートカットがある.

names1 = [ 'ann', 'richard', 'william', 'susan', 'pat' ]
puts names1[0] # ann
puts names1[3] # susan
# this is the same:
names2 = %w{  ann richard william susan pat }
puts names2[0] # ann
puts names2[3] # susan

while

よくあるwhile文です.

# Loops
var = 0
while var < 10
  puts var.to_s
  var += 1
end

三項演算子

これもよくある三項演算子です.

age = 23
person = (13...19).include?(age) ? "teenager" : "not a teenager"
puts person # "not a teenager"

case文

year = 2000
leap = case
       when year % 400 == 0 then true
       when year % 100 == 0 then false
       else year % 4   == 0
       end
puts leap
# output is: true

age = 19
puts  case age
      when 0..2  then "baby"
      when 3..19 then "child"
      else            "adult"
      end
# output is: child

nilについて

rubyでは,nilは実際のオブジェクトであり,他のオブジェクトのようにメソッドを呼び出したり,追加したり出来る.また,falseとnilは違うオブジェクトである.

# NIL is synonym for nil
puts NIL.class # NilClass
puts nil.class # NilClass
puts nil.object_id # 4
puts NIL.object_id # 4

# FALSE is synonym for false
puts FALSE.class # FalseClass
puts false.class # FalseClass
puts false.object_id # 0
puts FALSE.object_id # 0

参考: rubylearning.com - “http://rubylearning.com/satishtalim/tutorial.html”


comments powered by Disqus < rubyとrailsをバージョンを指定してインストールする. rubyでbrainfuckインタプリタ >