メモ

プログラミングRuby 第2版 言語編

プログラミングRuby 第2版 言語編

命名規則

ローカル変数・メソッド引数・メソッド名 全て小文字またはアンダースコア(_)
グローバル変数 ドル記号($)
インスタンス変数 アットマーク(@)
クラス変数 アットマーク2つ(@@)
クラス名・モジュール名・定数 先頭文字を大文字

複数の単語からなるインスタンス変数は単語の間をアンダースコア
複数の単語からなるクラス名はキャメル名

配列

irb(main):021:0> a[0]
=> 1
irb(main):022:0> a[1]
=> "hoge"
irb(main):023:0> a[2]
=> 2
irb(main):024:0> a[3]
=> nil
irb(main):025:0> a[-1]
=> 2
irb(main):026:0> a[-2]
=> "hoge"
irb(main):027:0> a[-3]

%w による配列作成

a = %w{1 hoge 3.14}

ハッシュ

hash = {
:key1 => 'value1',
:key2 => 'value2',
:key3 => 'value3'
}
=> {:key3=>"value3", :key2=>"value2", :key1=>"value1"}

hash[:key1]
=> "value4"
同じキーは後ろが有効
hash = {
:key1 => 'value1',
:key2 => 'value2',
:key3 => 'value3',
:key1 => 'value4'
}
=> {:key3=>"value3", :key2=>"value2", :key1=>"value4"}
デフォルト値を0にする場合
hash = Hash.new(0)
hash[:hoge]
=> 0

正規表現

"abcdefgabcdefg".sub(/cde/, 'CDE')
=> "abCDEfgabcdefg"

"abcdefgabcdefg".gsub(/cde/, 'CDE')
=> "abCDEfgabCDEfg"

コードブロック

#ブレース型
{ puts 'hello' }	

#do/end型
do
	puts 'hello'
end

ブレースのほうが結合力が強い。
1行のブロックにはブレースを、複数行のブロックは do/end を使うといい

def block
  puts 'start'
  yield
  yield
  puts 'end'
end
block { puts "block" }

#結果
start
block
block
end
=> nil
パラメータ付き
def block
  puts 'start'
  yield('hoge1', 'hoge2')
  yield('hoge3', 'hoge4')
  puts 'end'
end
block {|param1,param2| puts "param1=" + param1 + ", param2=" + param2 }

#結果
start
param1=hoge1, param2=hoge2
param1=hoge3, param2=hoge4
end
=> nil
colors = %w{ blue black white green }
colors.each{|color| puts color}

#結果
blue
black
white
green
=> ["blue", "black", "white", "green"]

printf

printf('test%d %s', 12345, 'hoge')

参考