Ruby復習①

ポートフォリオ作成に向けて、1月中に基礎学習を終わらせます。
HTML/CSS、JavaScriptの復習を終わらせたので、
次にRubyの復習をProgate、ドットインストールを用いて行っていきます。
なお、記述する内容は自分が忘れがちな所、苦手な所です。
HTML/CSS編、JavaScript編同様、自分用の備忘録的に投稿していくので(箇条書きで)、
読みづらいor間違えていることを書いている可能性もあるので、悪しからず。
(できるだけ他の方が見てもためになれば良いなとは思って投稿しますが・・・)
箇条書きで書いたことに関して、新たな発見、学び、気づき等あれば、
それぞれ個々に詳細を記述していこうと思います。

<h1>文字列</h1>

```Ruby:Rubyファイル
puts 'Hello World'
# シングルクォーテーションorダブルクォーテーションで囲む
```

<h1>変数</h1>

<h4>変数の定義</h4>

```Ruby:Rubyファイル
name = "Taro"
# 変数 = 代入する値の形で変数を定義できる
```

<h4>変数名のルール</h4>

○良い例・・・ 英単語を用いる、2語以上の場合はアンダーバーで区切る
× 悪い例・・・ 数字から始まる、ローマ字、日本語

<h1>変数展開</h1>

```Ruby:Rubyファイル
name = "鈴木"
puts "こんにちは#{name}さん"
#変数展開を用いたい場合はシングルクォーテーションではなく、ダブルクォーテーションを使うことに注意
```

```:コンソール
こんにちは鈴木さん
```

<h1>if文</h1>

```Ruby:Rubyファイル
if 条件式
  処理
end
```

```Ruby:Rubyファイル
score = 90
if score > 80
  puts "よくできました"
end
```

```:コンソール
よくできました
```

<h1>条件式の出力</h1>

```Ruby:Rubyファイル
score = 90
puts score > 80
```

```:コンソール
true
```

<h1>比較演算子</h1>

```Ruby:Rubyファイル
a == b #aとbが等しいとき、true
a != b #aとbが異なるとき、 true
```

<h1>else</h1>

```Ruby:Rubyファイル
if 条件式
  処理
else
  処理
end
```

```Ruby:Rubyファイル
score = 100
if score == 100
  puts "満点です"
else
  puts "満点ではありません"
end
```

<h1>elsif</h1>

```Ruby:Rubyファイル
if 条件式1
  処理
elsif 条件式2
  処理
else
  処理
end
```

```Ruby:Rubyファイル
score = 75
if score > 80
  puts "よくできました"
elsif score > 60
  puts "まずまずです"
else 
  puts "がんばりましょう"
end
```

```:コンソール
まずまずです
```

<h1>条件の組み合わせ</h1>

```Ruby:Rubyファイル
score = 68
if score <= 80 && score > 60
  puts "まずまずです"
end
```

```:コンソール
まずまずです
```

<h1>配列を変数に代入する</h1>

```Ruby:Rubyファイル
names = ["Yamada", "Sato", "Tanaka"]
puts names
puts names[1]
```

```:コンソール
Yamada
Sato
Tanaka
Sato
```

<h1>配列の要素と変数展開</h1>

```Ruby:Rubyファイル
names = ["Yamada", "Sato", "Tanaka"]
puts "私の名前は#{names[1]}です"
```

```:コンソール
私の名前はSatoです
```

<h1>each文</h1>

```Ruby:Rubyファイル
配列.each do |変数名|
  #実行したい処理
end
```

```Ruby:Rubyファイル
names = ["Yamada", "Sato", "Tanaka"]
names.each do |name|
  puts name
end
```

```:コンソール
Yamada
Sato
Tanaka
```

<h1>ハッシュ</h1>

```Ruby:Rubyファイル
{キー1 => 値1, キー2 => 値2}

#例
{"name" => "Yamada", "age" => 20}
#"name","age"がキー、"Yamada",20が値
```

<h4>ハッシュを変数に代入する</h4>

```Ruby:Rubyファイル
user = {"name" => "Yamada", "age" => 20}
puts user
```

```:コンソール
{"name" => "Yamada", "age" => 20}
```

<h4>ハッシュの要素を用いる</h4>

```Ruby:Rubyファイル
user = {"name" => "Yamada", "age" => 20}
puts user{"name"}
```

```:コンソール
Yamada
```

<h4>ハッシュの要素の更新</h4>

```Ruby:Rubyファイル
user = {"name" => "Yamada", "age" => 20}
puts user
user["age"] = 30
puts user
```
```:コンソール
{"name" => "Yamada", "age" => 20}
{"name" => "Yamada", "age" => 30}
```
<h4>ハッシュに要素を追加する</h4>

```Ruby:Rubyファイル
user = {"name" => "Yamada", "age" => 20}
puts user
user["gender"] = "male"
puts user
```
```:コンソール
{"name" => "Yamada", "age" => 20}
{"name" => "Yamada", "age" => 20, "gender" => "male"}
```

<h4>ハッシュのキーにシンボルを用いる</h4>

```Ruby:Rubyファイル
user = {"name" => "Yamada", "age" => 20}
# 以下のように書き換えられる
user = {:name => "Yamada", :age => 20}
puts user[:name]
```

```:コンソール
Yamada
```

<h4>キーがシンボルのハッシュの省略</h4>

```Ruby:Rubyファイル
user = {:name => "Yamada", :age => 20}
# 以下のように書き換えられる
user = {name: "Yamada", age: 20}
puts user[:name]
```

```:コンソール
Yamada
```

<h4>ハッシュの書き方まとめ</h4>

```Ruby:Rubyファイル
#キーが文字列の書き方
{"name" => "Yamada", "age" => 20}
#キーがシンボルの書き方
{:name => "Yamada", :age => 20}
#キーがシンボルの書き方(省略形)
{name: "Yamada", age: 20}
```

<h1>ifとnil</h1>
<h4>if文の条件</h4>
true・・・ falseとnil以外
false・・・ false,nil

<h1>配列の要素にハッシュを入れる</h1>

```Ruby:Rubyファイル
users = [
  {name: "Yamada", age: 20},
  {name: "Sato", age: 25}
]
user = users[1]
puts users[1]
puts user[:name]
puts users[1][:name]
```

```:コンソール
{name: "Sato", age: 25}
Sato
Sato
```

<h1>each</h1>

```Ruby:Rubyファイル
users = [
  {name: "Yamada", age: 20},
  {name: "Sato", age: 30}
]
users.each do |user|
  puts user
end

users.each do |user|
  puts user[:name]
end
```

```:コンソール
{name: "Yamada", age: 20}
{name: "Sato", age: 30}

Yamada
Sato
```

<h1>メソッド</h1>

<h4>メソッドの定義</h4>
```Ruby:Rubyファイル
def メソッド名
  処理
end
```

```Ruby:Rubyファイル
def introduce
  puts "こんにちは"
  puts "私はたろうです
end
```

<h4>メソッドの呼び出し</h4>

```Ruby:Rubyファイル
def introduce
  puts "こんにちは"
  puts "私はたろうです
end
introduce  #introduceメソッドを呼び出している
```

```:コンソール
こんにちは
私はたろうです
```

<h4>引数を受け取るメソッドの定義</h4>

```Ruby:Rubyファイル
def メソッド名(引数名)
  処理
end
```

```Ruby:Rubyファイル
def introduce(name)
  puts "こんにちは"
  puts "私は#{name}です"
end

introduce("たろう")
introduce("はなこ")
```

```:コンソール
こんにちは
私はたろうです
こんにちは
私ははなこです
```

<h4>複数の引数を受け取る</h4>

```Ruby:Rubyファイル
def introduce(name, age)
  puts "私は#{name}です"
  puts "#{age}歳です"
end

introduce("たろう",20)
```

```:コンソール
私はたろうです
20歳です
```

<h4>戻り値</h4>

```Ruby:Rubyファイル
def add(a,b)
  return a + b
end
sum = add(1,3)
puts sum
```

```:コンソール
4
```

<h4>様々な戻り値</h4>

```Ruby:Rubyファイル

def negative?(number)
  return number < 0
end
puts negative?(5)
```

```:コンソール
false
```

<h4>複数のreturn</h4>

```Ruby:Rubyファイル
def judge(score)
  if score > 80
    return "よくできました"
  end
  return "がんばりましょう"
end
puts judge(70)
```

```:コンソール
がんばりましょう
```

<h4>キーワード引数</h4>

```Ruby:Rubyファイル
def introduce(name:, age:, food:)
  puts "私は#{name}です"
  puts "年齢は#{age}歳です"
  puts "好きな食べ物は#{food}です"
end

introduce(name: "たろう", age: 20, food: "すし")
```

```:コンソール
私はたろうです
年齢は20歳です
好きな食べ物はすしです
```

<h5>続きは<a href="https://qiita.com/SOH_engineer/items/bac7edcc7d9087bfd381">Ruby復習②</a>へ</h5>