Rubyを始めてみたのでメモ

メソッド

各オブジェクトのメソッドが知りたいときはここから調べる。
http://www.ruby-doc.org/core-2.0/

■hashオブジェクトのメソッド例
.size : 配列の数が帰ってくる
.empty?["◯◯"] : 該当の配列にデータがあるかどうかが返ってくる

■Timeオブジェクトのメソッド例
.now
.strftime("%Y/%m/%d")

繰り返し

■表記方法は以下の3種類

10.times do |i|
puts "#{i}hi!"
end

for i in 1..10 do
puts i
end

i=1
while i<10 do
puts i
i = i+1
end

配列データのアウトプット

users = ["taguchi","fkoji","dotinstall"]

例えば上記の配列の場合、表記方法は以下の2種類。

for user in users do
puts user
end

users.each do |user|
puts user
end

ハッシュオブジェクトのアウトプット

scores = {"taguchi"=>200,"fkoji"=>300,"dot"=>120}

例えば上記データの場合、以下のように書けばOK。

scores.each do |name,score|
printf("%s's score is %d\n",name,score)
end

メソッドの定義

・メソッド名の定義はdef
・メソッド名は数字から始めるのはNG

こんな書き方

def sing(word = "la")
puts word + word + word + "~"
end
sing()
sing("hu")

こんな形でもOK。

def sing(word = "la", num)
s = ""
for i in 1..num do
s += word
end
s += "~"
return s
end

res = sing("hu",10)

puts res

classの定義

・classの名前は大文字から

class Monster
def initialize(name)
@name = name
@hp = 100+rand(100)
printf("%s appeard. His hp is %d\n", @name, @hp)
end
def damage
@hp -= 10 + rand(10)
printf("%s's hp is now %d\n",@name, @hp)
printf("%s is now dead!\n", @name) if @hp < 0
end
end

slime = Monster.new("slime")
i=0
while i < 10 do
slime.damage
i += 1
end