Help us understand the problem. What is going on with this article?

今週のRuby学習 変数から条件分岐まで

先週に引き続き、今週もRubyについて学んでいる。
先週の後半で、Rubyから気移りして昔やっていた、Swiftの勉強に逃避していた。
新しい言語を学ぶのは面白いけど、学習コストとカロリーが結構かかるので他の言語へと行きがちである。
最低でも、10時間くらいは初期に投資しなくてはいけないのかな。
早く物を作りたいという欲求で少し焦るが、今週はチュートリアルで精一杯な気がする。

今週の内容

  1. 変数定数について
  2. オブジェクトについて
  3. 数値オブジェクトについて
  4. 文字列オブジェクトについて
  5. ? や ! がついたメソッドを使おう
  6. 配列オブジェクトを使おう
  7. ハッシュオブジェクトを使おう。
  8. オブジェクトを変換
  9. %記法を使う
  10. 書式付きで値を埋め込む
  11. ifで条件分岐をする

変数について

変数はプログラミングをやっている人ならば理解しているはず。

変数は、英小文字。

msg = "Hello world"
puts msg

定数は、英大文字。

VERSION = 1.1
puts VERSION

オブジェクトについて

rubyは基本的に全て、オブジェクトに分類される。
メソッドは、クラスの中に含まれる。
ざっくり言うと下記のような感じ。

image.png

数値オブジェクトについて

含まれるクラスやメソッドを調べる方法。
とても簡単!

インスタンス.class

インスタンス.methods

四則演算は他のものと一緒。
べき乗は **

浮動小数を表現したいときは、数値のどちらかを小数点にすれば自動的に表示してくれる。
例えば、 10.0 / 3 にすれば、3.3と表示される。

分数表現

Rational(2,5)

2/5という表現。分数表現で四則演算も可能。

短縮表現として、下記のような表現も可能。

2/5r

Floatのデータ型のときは

  • 10.1,round #四捨五入
  • 10.1.floor #小数点以下切り捨て
  • 10.1.ceil #小数点以下切り上げ

文字列オブジェクトについて

特殊文字

改行: /n
タブ: /t

式展開の表示

puts "price #{3000*4}"

※シングルコーテーションの場合は、単純に、文字が表示される。
#{式} で式展開が可能になる。

文字列の式展開例

変数の名前と文字列を合わせて表示するケース。

name = "Taro"
puts "hello #{name}"

文字列 に対して式を展開する。

puts "hello" * 10

?や!がついたメソッドを使おう。

!マークの使い方

upcase #文字列を大文字にするメソッド
downcase #文字列を小文字にするメソッド
reverse #文字列を逆にする

upcase! #破壊的なメソッド。大元の数値を書き換える。

name = "taguchi"

puts name.upcase
puts name
puts name.upcase!
puts name #大元のtaguchiが変更されている。

?の使い方

?は基本的に真偽値を確かめるために使用する。
真偽値でtrue / false を返す。

name = "taguchi"
p name.empty? #中身が空か確かめる。
p name.include?("g") #gという文字列が含まれるか確認する。

配列

配列の使い方

array.rb
colors = ["red", "blue", "yellow"]
p colors[0]  #配列の0番目
p colors[-1] #配列の最後尾
p colors[0..2] #0から二番目までも配列
p colors[0...2] #0から2の直前
p colors[5] # 配列になにもはいっていないときは、nilが返ってくる

colors[0] = "pink" #配列0の書き換え
colors[1..2] = ["white" , "black"] #配列1、2を書き換え
colors.push("gold") #配列の末尾に配列追加
colors << "silver" #上記pushの短縮表現。
p.colors

p colors.size #要素の数を示す
p colors.sort #要素の並び替えをオコアヌ


ハッシュオブジェクトを使おう。

ハッシュオブジェクトは、keyとvalueを保存することのできるオブジェクト。

scores = {"taguchi" => 200, "fkoji" => 400} #{}がハッシュ? keyと値を結びつけるために=>を使う。
#keyはシンボルオブジェクトを使う。 ※タブルコーテーションを : に変えるだけ
scores = {:taguchi => 200, :fkoji => 400}
#さらに短くすると
scores = {taguchi:200, fkoji:400}

#ハッシュへのアクセス
p scores[:taguchi]
scores[:fkoji] = 600 #fkojiの数値の変更
p scores

#便利なメソッド
p scores.size #要素の数の確認
p scores.keys # keyの一覧確認
p scores.values #valueの一覧確認
p scores.has_key?(:taguchi) #keyの中にtaguchiがあるかどうかの確認

オブエジェクトを変換

整数への変換 .to_i
不動小数点への変換 .to_f
文字列変換 .to_s
配列への変換 .to_a
ハッシュへの変換戻し .to_h

scores = {taguchi:200, fkoji : 400}
p scorers.to_a  #配列への変換。keyと値が配列へと変換される。

%記法を使う

puts "hello"
puts hello

は、%記法で書くことができる。

puts %Q(hello)
puts %(hello) #上の記法と一緒の意味。Qの省力。
puts %q(hello) #シングルコーテーションの意味と同様になる。

シングルコーテーションやダブルコーテーションを使いたいときに便利な記法。

配列で文字列管理

p ["red" , "blue"]

p %W[red blue] #上記と一緒の意味。

書式付きで値を埋め込む

%を使って文字列に書式を埋め込む。

"文字列" % 値

文字列 %s
整数 %d
浮動小数店 %f

p "name: %s " % "taguchi"
p "name: %10s " % "taguchi" #10文字分の文字列を指定
p "name: %-10s" % "taguchi" #10文字分の文字列を指定して、左寄せ。

#idとrateを表示したい。
p "id: %05d , rate: %10.2f" % [355, 3.284] #配列でidに整数、rateに浮動小数を入れる。

#printf / sprintfの使い方
printf("name: %10s\n", "taguchi") # %じゃなくて、カンマでok
printf("id: %05d , rate: %10.2f\n" , 355, 3.284)

ifで条件分岐する

if 条件 then
 処理
end

※then は省略することが可能。

score gets.to_i

if score > 80 then 
puts "great"
else if score >60 then
puts "good"

else 
puts "so..so.."
end

#別な書き方 if を後ろに置くパターン
puts "great" if score > 80

case ~ signalの書き方

case signal
when "条件" then
処理
else
処理
end

※thenは省略可能

signal = gets.chomp # 改行コードをchompでなくす。

case signal 
when "red" then
puts "stop!"
when "green","blue" then #カンマでシグナルをいくつか置くことも可能。
puts "go!"
when "yellow" then
puts "caution!"
else 
puts "wrong signal"
end

まとめ

  • rubyならではの記法もでてきて、少しワクワク。
  • ここまで、1時間半くらいかかっている。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away