LoginSignup
0
0

More than 1 year has passed since last update.

【完全自分用】Rubyの問題を解いて知識をアウトプットする。

Posted at

はじめに

今回は完全に自分用アウトプットです。
Rubyの問題を解いて、プログラムの知識や考え方を深堀りするために記述します。

Q1 ハッシュの基礎

まずはハッシュの基礎

puts hash.keys
puts hash.values

のメソッドを実行した際に英語と数字で123が表示されるように記述。

hash = {one: 1, two: 2. three: 3}

これは簡単。

hash = { キー: 値}

基礎中の基礎。

Q2 二重ハッシュ

続いて二重ハッシュ

user_data = [
 {user: {profile: {name: 'George'}}},
 {user: {profile: {name: 'Alice'}}},
 {user: {profile: {name: 'Taro'}}},
]

ユーザーの名前だけが出力されるようコーディングする

user_data.each do |u|
  puts u[:user][:profile][:name]
end

抑えるべきポイントは

ハッシュ[取得したい値のキー]

nameの値を出力するためには

ハッシュ[取得したい値のキー][取得したい値のキー][取得したい値のキー]

のように連続して記述そうすることで3つ目の値を取得できる。
以下が出力結果

George
Alice
Taro

Q3 クラスとインスタンスの概念initialiszeメソッド

続いてクラスとインスタンスの概念

class Article

  def initialize(author, title, content)
    @author = author
    @title = title
    @content = content
  end

end

上記コードを使用し、以下の出力結果を得られるよう記述する。

著者: 阿部
タイトル: Rubyの素晴らしさについて
本文: Awesome Ruby!
class Article

  def initialize(author, title, content)
    @author = author
    @title = title
    @content = content
  end

  def author
    @author
  end

  def title
    @title
  end

  def content
    @content
  end

end

article = Article.new("阿部", "Rubyの素晴らしさについて", "Awesome Ruby!")
puts "著者: #{article.author}"
puts "タイトル: #{article.title}"
puts "本文: #{article.content}"

記述は長いですが、抑えるべきポイントはinitializeメソッドです。インスタンスが生成された瞬間に、インスタンスが実行する処理を定義するインスタンスメソッド。article = Article.new("阿部", "Rubyの素晴らしさについて", "Awesome Ruby!")の記述でインスタンスが生成されているのでその瞬間に実行されている。

Q4 特定条件のみに呼応するプログラムの作成

続いて特定条件のみに呼応するプログラムの作成
DataクラスはRubyの標準ライブラリ機能。使用するにはrequire "date"を記述。
今日の曜日はDate.today.wdayのように記述。
使用例

require "date"

day = Date.today.wday

puts day

この記述で木曜日なら4が出力される。
これらを用いて今日の曜日を表示するコードをDataクラスを使用して記述
ただし、金曜日であれば、「今日は金曜日だ!」を出力

require "date"
day = Data.today.wday
days = ["日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日"]

if == 5
puts "今日は#{days[day]}だ!"
else
puts "今日は#{days[day]}"
end

0=日曜日〜6=土曜日

Q5 ifをunlessに書き換える

if a + b > 0
  puts "計算結果は0より大きいです"
end

をunlessというメソッドを用いて書き換える。
unlessはifの逆。falseの場合に処理が実行されるメソッド

unless a + b <= 0
  puts "計算結果は0より大きいです"
end

詳しifとunlessを見ると。
if

if 条件式
  条件式がtrueの時に実行する処理
else
  条件式がfalseの時に実行する処理
end

unless

unless 条件式
  条件式がfalseの時に実行する処理
else
  条件式がtrueの時に実行する処理
end

終わりに

簡単な内容だが、基礎固めのため毎日5問程度で進めていく。
全部で35問1週間かけて解いていきます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0