Open5
Ruby 文法 学習日記
コメント
# 1行コメント
=begin
複数行の
コメント
=end
出力
print 'Hello World'
# 末尾改行
puts '末尾改行あり'
# 末尾改行+型情報
p 9999
p 'これは文字列'
# 書式指定
printf("名前 %s 好きな数字 %d \n", 'balaenoptera', 1)
# 書式指定して文字列として返す
p sprintf("名前 %s 好きな数字 %d", 'balaenoptera', 1)
# 見やすくして表示する(pretty printの略らしい)
pp ['pp', 1, 2, 3, 4, 5, 6]
出力
Hello World末尾改行あり
9999
"これは文字列"
名前 balaenoptera 好きな数字 1
"名前 balaenoptera 好きな数字 1"
["pp", 1, 2, 3, 4, 5, 6]
変数
value = 2 # ローカル変数(定義したスコープでのみ参照できる)
@value = 2 # インスタンス変数(定義したクラスのインスタンス間でのみ参照できる)
@@value = 2 # クラス変数(定義したクラスでのみ参照できる)
$value = 2 # グローバル変数(定義されていれば Ruby 全体から参照できる)
FOO = 2 # 定数 アルファベット大文字で書くのが流儀
class Hoge
def initialize
@value = 2 # インスタンス変数(オブジェクト毎に値が異なる)
@@value = 2 # クラス変数(すべてのオブジェクトに対して共通)
end
def increment_instance_variable
@value += 1
end
def increment_static_variable
@@value += 1
end
def show
printf "@value:%d, @@value:%d\n", @value, @@value
end
end
foo1 = Hoge.new
foo2 = Hoge.new
foo1.increment_instance_variable
foo1.increment_static_variable
pp foo1.show
pp foo2.show
出力
@value:3, @@value:3
nil
@value:2, @@value:3
nil
条件分岐
if文
if num == 0
puts "num == 0"
elsif num < 0
puts "num < 0"
else
puts "num > 0"
end
else if は elsif
らしい。 else if でいいだろ。
後置if
puts "num == 0" if num == 0
puts "num < 0" if num < 0
puts "num > 0" if num > 0
ネスト消えて読みずらい。多分使わない。
unless
unless num == 0
puts "num == 0"
end
複雑な条件の時は使えそう?
case 文
case value
when 1
puts "one"
when 2
puts "two"
when 3
puts "three"
end
sqlに寄せた感じ? パッと見は読みにくい気がする。
反復処理
while 文
num = 0
while num < 9 do
print num
if num == 5
print "break!"
break
end
num += 1
end
出力
012345break!
do
は省略可能。breakはbreak。
num = 0
num += 1 while num < 10
puts num
出力
10
後置でも使えるらしい。while修飾子というらしい。
for文
for i,j,k in [[1,2,3], [4,5,6], [7,8,9]]
p [i,j,k]
end
出力
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
実際配列に対してはeach
メソッドを用いることがほとんどらしい。
# もちろんこうも書ける
# [[1,2,3], [4,5,6], [7,8,9]].each{|num|
# p num
#}
[[1,2,3], [4,5,6], [7,8,9]].each do |num|
p num
end