読者です 読者をやめる 読者になる 読者になる

感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

Ruby 配列の作り方

<スポンサーリンク>

■Rubyの配列の作り方

a = Array.new
a = Array.new(5)
a = Array.new(5,0)

要素が文字列で、空白を含まない場合は%wを使って配列を作れる。

names = %w(Mizky Takaki Toshi Tenshin)
p names #→["Mizky", "Takaki", "Toshi", "Tenshin"]

カンマや空白で区切られた文字列から配列を作る→splitメソッドを使う。

names = "mizky takaki yuki naoki".split()
p names

・配列に要素を挿入する
[n,0]とするとインデックスがnの要素の前に挿入される。

names = "mizky takaki yuki naoki".split()
p names

names[2,0] = ["koyo","hagi"]
p names

結果

["mizky", "takaki", "yuki", "naoki"]
["mizky", "takaki", "koyo", "hagi", "yuki", "naoki"]

キューとは、要素を取り出す際、要素を追加した順に取り出すことができるデータ構造のこと。
これはFIFO(First-in First-out)という。

スタックとは要素を追加した順と逆の順序で要素を取り出すデータ構造のこと。
LIFO(Last-in First-out)ともいう。

末尾に対して・・・
要素を加える→push
要素を取り除く→pop
要素を参照する→last

先頭に対して・・・
要素を加える→unshift
要素を取り除く→shift
要素を参照する→first

サンプル

names = "mizky takaki yuki naoki".split()
p names

names[2,0] = ["koyo","hagi"]
p names

p names.push("sho")
p names.shift
p names.pop
p names.first
p names.last

結果

["mizky", "takaki", "yuki", "naoki"]
["mizky", "takaki", "koyo", "hagi", "yuki", "naoki"]
["mizky", "takaki", "koyo", "hagi", "yuki", "naoki", "sho"]
"mizky"
"sho"
"takaki"
"naoki"

popメソッドやshiftメソッドのように、レシーバにあたるオブジェクトの値そのものを変更してしまうメソッドは破壊的なメソッドと呼ばれる。

■配列に要素を加える
・先頭に新しい要素を加える
a.unshift(item)
・末尾に新しい要素を付け加える
a << item
a.push
・配列aに別の配列bを連結する
a.concat(b)
a + b

・配列aから要素がnilのものを取り除く
a.compact
a.compact!
conpact!メソッドはnilを取り除いた後のaを返す。
conpactは新しい配列を作る。

values = [1, nil,5,nil,6]
values.compact!

p values

values2 = [1, nil,5,nil,6]
values2.compact

p values2

values3 = values2.compact
p values3

結果

[1, 5, 6]
[1, nil, 5, nil, 6]
[1, 5, 6]

・配列aから要素xを取り除く
a.delete(x)


・配列a[n]の要素を取り除く
a.delete_at(2)

・配列aの重複する要素を削除する
a.uniq
a.uniq!

・インデックス付きで繰り返し

names = ["mizky","tkk","hagi","koyo"]
names.each_with_index do |elem, i|
	print i+1,"番目の人は",elem,"です\n"
end

結果

1番目の人はmizkyです
2番目の人はtkkです
3番目の人はhagiです
4番目の人はkoyoです

★復習★
Rubyには4種類の変数がある。
・ローカル変数
→先頭がアルファベットの小文字か「_」で始まる
・グローバル変数
→先頭が「$」で始まる
・インスタンス変数
→先頭が「@」で始まる
・クラス変数
→先頭が「@@」で始まる

定数は「先頭がアルファベットの大文字で始まるもの」とされている。


文字列クラスのempty?メソッドはその文字列の長さが0のときにtrueを、そうではないときにはfalseを返す。

真偽値を返すメソッドの名前は一目でわかるように末尾に「?」をつけるルールがある。

if文

if 条件1 then
	文
elsif 条件2 then
	文
elsif 条件3 then
	文
else
	文
end

case文

array = ["a", 1 , nil ]
array.each do |item|
	case item
	when String
		puts "item is a String"
	when Numeric
		puts "item is a Numeric"
	else
		puts "item is something"
	end
end

結果

item is a String
item is a Numeric
item is something

<参考>

たのしいRuby 第3版

たのしいRuby 第3版

  • 作者: 高橋征義,後藤裕蔵,まつもとゆきひろ
  • 出版社/メーカー: ソフトバンククリエイティブ
  • 発売日: 2010/03/31
  • メディア: 単行本
  • 購入: 15人 クリック: 394回
  • この商品を含むブログ (81件) を見る