学習用資料ru-1

###HelloWorld

```ruby:sample.rb
puts "HelloWorld"
```
出力結果

```
HelloWorld
```

###変数

文字列を出力

```ruby:sample.rb
a = "HelloWorld"
puts a
```

出力結果

```
HelloWorld
```

数字を出力
#####足し算を出力

```ruby:sample.rb
a = 1 + 2
puts a
```

実行結果

```
3
```

#####引き算を出力

```ruby:sample.rb
a = 4 - 2
puts a
```

出力結果

```
2
```

#####掛け算を出力

```ruby:sample.rb
a = 4 * 2
puts a
```

出力結果

```
8
```

#####割り算を出力

```ruby:sample.rb
a = 4 / 2
puts a
```

出力結果

```
2
```

#####余りを出力

```ruby:sample.rb
a = 5 % 2
puts a
```

出力結果

```
1
```

###if文

#####if文

```ruby:sample.rb
age = 23

if age >= 20 then
    puts "お酒が飲めます"
end
```

出力結果

```
お酒が飲めます
```

#####if文結果受け取り

```ruby:sample.rb
age = 23

result = if age >= 20 then
    "お酒が飲めます"
end

puts result
```

出力結果

```
お酒が飲めます
```

#####if-else文

```ruby:sample.rb
age = 18

if age >= 20 then
    puts "お酒が飲めます"
else
    puts "お酒が飲めません"
end
```

出力結果

```
お酒が飲めません
```

#####if-elsif文

```ruby:sample.rb
age = 18

if age >= 20 then
    puts "お酒が飲めます"
elsif age >= 0 then
    puts "お酒が飲めません"
else
    puts "数字が不正です"
end
```

出力結果

```
お酒が飲めません
```

###繰り返し

#####times

```ruby:sample.rb
10.times do
    puts "Hello"
end
```

出力結果

```
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
```

#####times index

```ruby:sample.rb
10.times do |count|
    puts count
end
```

出力結果

```
0
1
2
3
4
5
6
7
8
9
```

#####for

```ruby:sample.rb
for i in 1..10 do
    puts i
end
```

出力結果

```
1
2
3
4
5
6
7
8
9
10
```

#####for 配列

```ruby:sample.rb
array = ["apple", "banana", "cherry", "drian"]

for item in array do
    puts item
end
```

出力結果

```
apple
banana
cherry
drian
```

#####for next

```ruby:sample.rb
for i in 1..10
    if i%2 == 0
        next
    end
    puts i
end
```

出力結果

```
1
3
5
7
9
```

#####for break

```ruby:sample.rb
for i in 1..10
    if i == 5
        break
    end
    puts i
end
```

出力結果

```
1
2
3
4
```

#####while

```ruby:sample.rb
count = 0

while count < 5 do
    puts count
    count = count + 1
end
```

出力結果

```
0
1
2
3
4
```

#####each

```ruby:sample.rb
array = ["apple", "banana", "cherry", "drian"]

array.each do |fruit|
    puts fruit
end
```

出力結果

```
apple
banana
cherry
drian
```

###メソッド

#####引数無しメソッド

```ruby:sample.rb
def greet
    puts "Hello"
end

greet
```

出力結果

```
Hello
```

()をつけても可能

```ruby:sample.rb
def greet
    puts "Hello"
end

greet()
```

出力結果

```
Hello
```

#####引数有りメソッド

```ruby:sample.rb
def greet(a)
    puts "Hello #{a}"
end

greet "Tom"
```

出力結果

```
Hello Tom
```

()省略可能

```ruby:sample.rb
def greet a
    puts "Hello #{a}"
end

greet "Tom"
```

出力結果

```
Hello Tom
```

#####引数二つ

```ruby:sample.rb
def greet a,b
    puts "Hello #{a} #{b}"
end

greet "Tom", "Mike"
```

出力結果

```
Hello Tom Mike
```

#####戻り値あり

```ruby:sample.rb
def greet a,b
    "Hello #{a} #{b}"
end

puts greet "Tom", "Mike"
```

出力結果

```
Hello Tom Mike
```

一番最後の値が戻り値となる

```ruby:sample.rb
def greet a,b
    a = "!" + a + "!"
    b = "!" + b + "!"
    "Hello #{a} #{b}"
end

puts greet "Tom", "Mike"
```

出力結果

```
Hello !Tom! !Mike!
```

#####デフォルト引数

```ruby:sample.rb
def greet a,b = "Mike"
    "Hello #{a} #{b}"
end

puts greet "Tom"
```

出力結果

```
Hello Tom Mike
```

このようにも書ける

```ruby:sample.rb
def greet a,b: "Mike"
    "Hello #{a} #{b}"
end

puts greet "Tom"
```

出力結果

```
Hello Tom Mike
```

#####キーワード付き引数

```ruby:sample.rb
def greet a,b: "Mike",c: "Mary"
    "Hello #{a} #{b} #{c}"
end

puts greet "Tom", c:"Ted"
```

出力結果

```
Hello Tom Mike Ted
```

###クラス

#####インスタンス作成

```ruby:sample.rb
class Dog
    def greet
        "わんわん"
    end
end

dog = Dog.new

puts dog.greet
```

出力結果

```
わんわん
```

#####インスタンス変数

```ruby:sample.rb
class Person
    def name
        @name
    end

    def name=(name)
        @name = name
    end
end

a = Person.new
a.name = "taro"

b = Person.new
b.name = "hanako"

puts a.name
puts b.name
```

出力結果

```
taro
hanako
```

#####クラス変数

```ruby:sample.rb
class Foo
    @@instance = "Hello"

    def ins
        @@instance
    end

    def ins=(ins)
        @@instance = ins
    end
end

a = Foo.new
a.ins = "Hello Tom"
puts "a = #{a.ins}"

b = Foo.new
b.ins = "Hello Mary"
puts "b = #{b.ins}"
puts "a = #{a.ins}"
```

出力結果

```
a = Hello Tom
b = Hello Mary
a = Hello Mary
```

#####クラス初期化

```ruby:sample.rb
class Person
    def initialize(name)
        @name = name
    end

    def name
        @name
    end
end

a = Person.new("Taro")
puts "a = #{a.name}"

b = Person.new("Hanako")
puts "b = #{b.name}"
```

出力結果

```
a = Taro
b = Hanako
```

###例外

#####例外を発生させる

```ruby:sample.rb
puts "Hello"
raise "Exception発生"
```

出力結果

```
Hello
Traceback (most recent call last):
sample.rb:2:in `<main>': Exception発生 (RuntimeError)
```

#####例外を捕捉する

```ruby:sample.rb
puts "Hello"
begin
    raise "Exception発生"
rescue => error
    puts error
end

puts "Finish"
```

出力結果

```
Hello
Exception発生
Finish
```