ホームに戻る
 Rubyのサンプル

# Rubyメモ

=begin
 たのしいRuby第3版
=end

num = 1
str = "abc"

# Hello! World!
puts "Hello!World!"
print "Hello!Ruby!\n"
print "100".to_i, "\n"

# if 式
if num == 1 then
  print "if num = ", num, "\n"
elsif num == 2 then
  print "elsif num = ", num, "\n"
else
  print "else num = ", num, "\n"
end

unless num == 1 then # if の逆
  print "unless num = ", num, "\n"
else
  print "unless else num = ", num, "\n"
end

# case 式
case num
when String
  print "case String\n"
when Numeric
  print "case Numeric\n"
else
  print "case else\n"
end

# loop
while num < 5 do
  num = num + 1
  print "while num = ", num, "\n"
end

until num > 10 do
  num = num + 1
  if num == 7
    next    # 次のループへ
    # redo  # もう一度やる
    # break # 終了する
  end
  print "until num = ", num, "\n"
end

3.times do
  num = num + 1
  print "times num = ", num, "\n"
end

for x in num + 1..num + 3 do
  print "for num = ", x, "\n"
end

# 関数
def f(n = 1)
  print "func n = ", n, "\n"
  return n + 1 # return は省略できる
end

f()
f(3)

# リスト
name = ["abc", "def", 012]

print "array 0 = ", name[0], "\n"
print "array 2 = ", name[2], "\n"

print "array size = ", name.size, "\n"

name.each do |x|
  print "array each = ", x, "\n"
end

# ハッシュ

table = {:a => "A", :b => "B", :c => "C"}

print :a.to_s, " = ", table[:a], "\n"

table.each do |key, value|
  print "hash each = ", key, " = ", value, "\n"
end

# コマンド

print "ARGV = ", ARGV[0], "\n"

# ファイル

file = open("test.rb")
text = file.gets
print text
file.close

# 変数

X = 0   # 定数(先頭が大文字である)
x = 0   # 変数(先頭が小文字か _ である)
$x = 0  # グローバル変数

# クラス

class ClassA
  A = 123
  @@count = 0

  def initialize(num = 100)
    @n = num
  end

  def add_count
    @@count = @@count + 1
  end
  private :add_count

  def f
    print "ClassA f ", @n, ":", @@count, "\n"
    add_count()
  end
  public :f
end

a1 = ClassA.new
a2 = ClassA.new(200)

a1.f
a2.f

print "ClassA::A = ", ClassA::A, "\n"

class ClassB < ClassA
  @@count = 0

  def initialize(num = 300)
    super(num)
  end
  def f
    print "ClassB f ", @n, ":", @@count, "\n"
    add_count()
  end
  public :f
end

b1 = ClassB.new

b1.f

print "ClassB::A = ", ClassB::A, "\n"

inserted by FC2 system