LoginSignup
1
3

More than 3 years have passed since last update.

【Ruby】基本コマンド一覧

Posted at

【Ruby】基本コマンド一覧

Rubyの基本コマンドの一覧と実例。

目次

  1. puts, print, pの違い
  2. 定数
  3. オブジェクトのクラス一覧表示(.class)
  4. オブジェクトのメソッド一覧表示(.methods)
  5. 小数点以下の計算
  6. 小数点の表示桁数指定
    1. format(または sprintf)
    2. round, ceil, floorメソッド
  7. 文字列
    1. 式展開
    2. 連結
    3. 繰り返し
    4. 文字数カウント(.length)
    5. 文字列から数値に変換(.to_i)
  8. 配列
    1. 配列の要素取得
    2. 要素追加(push or <<)
    3. 配列の長さ取得(size, length, count)
    4. ソート
  9. ハッシュオブジェクト
    1. 作成と呼び出し
    2. 要素追加
    3. 要素削除(.delete(:キー名))
  10. 条件分岐
    1. if
    2. case,when
  11. 繰り返し
    1. for in
    2. each do
    3. while
    4. times do
    5. loop + break
    6. スキップ(if next)
  12. メソッドの作成と呼び出し
  13. クラスの作成とインスタンスの生成


puts, print, pの違い

それぞれに微妙な違いはあるものの、putsついで、pだけ覚えておけばいい。

それぞれの差は、改行の有無や型表現の有無。

メソッド puts p print
用途 本番用 デバッグ用 pythonの名残?
改行 あり あり なし
型表現 なし あり なし
putsとprintの違い(改行の有無)
puts "こんにちは"
puts 123

#こんにちは
#123


print "こんにちは"
print 123

#こんにちは123



▼「p」の場合、文字列のテキストにダブルクオテーションがつく

putsとpの違い(型表現の有無)
puts "こんにちは"
puts 123

#こんにちは
#123


p "こんにちは"
p 123

#"こんにちは"
#123


定数

・変数を大文字で定義
・単語を複数つなげる場合はアンスコを使用
・上書きしたり、再定義するとエラーが出る

TAX_RATE = 1.0
puts TAX_RATE

#上書き指示
TAX_RATE = 1.5

#warning: already initialized constant TAX_RATE
#warning: previous definition of TAX_RATE was here


オブジェクトのクラス一覧表示(.class)

p オブジェクト.class

p 1.1.class

#Float


オブジェクトのメソッド一覧表示(.methods)

p オブジェクト.methods

p 1.1.methods

#[:-@, :**, :<=>, :<=, :>=, :==, :===, :eql?, :%, :inspect, :*, :+, :-, :/, :<, :>, :to_int, :coerce, :to_s, :divmod, :to_i, :to_f, :to_r, :fdiv, :modulo, :abs, :magnitude, :zero?, :finite?, :infinite?, :floor, :ceil, :round, :truncate, :positive?, :negative?, :numerator, :denominator, :rationalize, :arg, 以下省略...
p "abc".methods

#[:encode, :encode!, :unpack, :unpack1, :include?, :%, :*, :+, :count, :partition, :to_c, :sum, :next, :casecmp, :casecmp?, :insert, :bytesize, :match, :match?, :succ!, :<=>, :next!, :upto, 以下省略...


小数点以下の計算

計算する整数に「.0」をつけると小数点まで表示する。
 ┗ どちらか一方
 ┗ 桁数を指定するものではない
 ┗ ない場合は切り捨て

p 8.0 / 3
p 8/3.0
p 8/3

#2.6666666666666665
#2.6666666666666665
#2


round, ceil, floorメソッド

.round:四捨五入
.ceil:切り上げ
.floor:切り捨て

p 8.0/7
p (8.0/7).round
p (8.0/7).ceil
p (8.0/7).floor

#1.1428571428571428
#1   round
#2   ceil
#1   floor


小数点の表示桁数指定

format(または sprintf)

format("%.桁数f", 対象数値)

calc = 8/3.0

puts format("%.2f", calc)
puts sprintf("%.2f", calc)

#2.67
#2.67

round, ceil, floorメソッド

オブジェクト.round(桁数)
オブジェクト.ceil(桁数)
オブジェクト.floor(桁数)

puts calc.round(2)
puts calc.round(3)

#2.67
#2.667


puts calc.ceil(2)
puts calc.ceil(3)

#2.67
#2.667


puts calc.floor(2)
puts calc.floor(3)

#2.66
#2.666


文字列

式展開

puts "#{数式や変数}"
 ┗ ダブルクオテーション
 ┗ シングルだとそのまま出力

puts "tax #{1000 * 0.10}"
#tax 100.0

puts 'tax #{1000 * 0.10}'
#tax #{1000 * 0.10}


連結

puts 文字列 + 文字列

puts "Hello" + "World"

#HelloWorld


文字列の繰り返し

puts 文字列 * n

puts "Hello★" * 5

#Hello★Hello★Hello★Hello★Hello★


文字数カウント(.length)

puts 文字列.length

str = "hello world"
p str.length

#11


文字列から数値に変換(.to_i)

puts 文字列.to_i

str = "123"

p str
p str.to_i

#"123"
#123


配列

配列の要素取得

変数 = [ , , , ]

colors = ["red", "blue", "white"]

p colors[0]
p colors[3] #nil
p colors

#"red"
#nil
#["red", "blue", "white"]


要素追加(push or <<)

オブジェクト.push(追加要素)
オブジェクト << (追加要素)

colors = ["red", "blue", "white"]

p colors.push("green")
#["red", "blue", "white", "green"]

p colors << ("black")
#["red", "blue", "white", "green", "black"]


配列の長さ取得(size, length, count)

オブジェクト.size
オブジェクト.length
オブジェクト.count

colors = ["red", "blue", "white", "green", "black"]

p colors.length
p colors.size
p colors.count

#5
#5
#5


ソート

オブジェクト.sort
オブジェクト.sort.reverse

colors = ["red", "blue", "white", "green", "black"]

p colors.sort
p colors.sort.reverse

#["black", "blue", "green", "red", "white"]
#["white", "red", "green", "blue", "black"]
numbers = [5, 8, 1, 4, 9]

p numbers.sort
p numbers.sort.reverse

#[1, 4, 5, 8, 9]
#[9, 8, 5, 4, 1]


ハッシュオブジェクト

作成と呼び出し

書き方は3種類あるが、省略形のみ覚えておけばいい。

作成
変数 = {キー:値, キー:値,,,}

呼び出し
変数[:キー名]

scores = {tanaka:100, sato:80, ito:50}

p scores
p scores[:sato]

#{:tanaka=>100, :sato=>80, :ito=>50}
#80



▼他の記述方法

以下どれも同じ
score1 = {"tanaka" => 100, "sato"=>80, "ito"=>50 }
score2 = {:tanaka =>100, :sato=>80, :ito=>50}
score3 = {tanaka:100, sato:80, ito:50}

p score1
p score2
p score3

#{:tanaka=>100, :sato=>80, :ito=>50}
#{:tanaka=>100, :sato=>80, :ito=>50}
#{:tanaka=>100, :sato=>80, :ito=>50}


要素追加

変数[:キー名] = 値

scores = {tanaka:100, sato:80, ito:50}

scores[:suzuki] = 40
p scores

#{:tanaka=>100, :sato=>80, :ito=>50, :suzuki=>40}


要素削除(.delete(:キー名))

変数.delete(:キー名)

scores = {tanaka:100, sato:80, ito:50, suzuki:40}

scores.delete(:suzuki)
p scores

#{:tanaka=>100, :sato=>80, :ito=>50}


条件分岐

if

条件式で処理を分岐する。
if, elsif, else, end

stock = 5  #在庫

if i >= 10
    puts '在庫:◎'
elsif i > 3
    puts '在庫:△'
elsif i == 1
    puts '在庫:ラスト1個'
else 
    puts '在庫:×'
end

#在庫:△


case,when

で条件式を分岐する。
case, when, else, end

case構文の構造
# case 評価したい変数
#     when 数値
#         処理    
#     when 範囲(開始値..終値)
#         処理
#     when 範囲(開始値..終値)
#         処理
#     else
#         処理
# end



▼実例

age = 6

case age 
    when 0..5
        puts 800
    when 6..11
        puts 1800
    else 
        puts 2500
end 

#1800

開始値 .. 終値
 ┗ 開始値〜終値までの範囲


繰り返し

for in

for 変数 in 範囲

配列
x = ["A", 1, "b", 3]

for i in x
    puts i
end

#A
#1
#b
#3
連続した数値
for i in 0..3
    puts i
end

#0
#1
#2
#3


each do

eschメソッドによる繰り返し。
オブジェクト.each do |変数| 処理 end

arrays = ["A", 1, "b", 3]

arrays.each do |array|
    puts array
end

#A
#1
#b
#3


while

条件範囲内での繰り返し。
while 条件式 処理 end

i = 0

while i < 3
    puts i
    i += 1
    # i++は使えない
end

#0
#1
#2


times do

繰り返し回数の指定。
数値.times do |変数|
 ┗ 変数にインデックス番号が入る(0始まり)

3.times do |i|
    puts "#{i}回目の処理です"
end


#0回目の処理です
#1回目の処理です
#2回目の処理です


loop + break

無限ループと終了条件の組み合わせによる繰り返し。
loop{処理 if 条件 break end}
 ┗ 終了条件(break)がないとエラーになる

i = 0 

loop{
    puts i
    i += 1

    if  i >=3
        break
    end
}

#0
#1
#2
#3


スキップ(if next)

指定条件のみスキップする。
if 条件式 next end
 ┗ 繰り返し処理の中で使用する。

3.times do |i|
    if i == 1 
        next
    end

    puts "#{i}回目の処理です"
end

#0回目の処理です
#2回目の処理です


メソッドの作成と呼び出し

▼作成
def メソッド名() 処理 end
 ┗ 引数なしの場合は()不要。

▼呼び出し
メソッド名()

def hello(name)
    puts "Hello #{name}さん"
end

hello("Yuta")

#Hello Yutaさん



▼事例2

複数個の引数
def ttl_price(price, n)
    return (price * n * 1.10).floor  #returnは省略可能
end

puts ttl_price(500, 3)

#1650


クラスの作成とインスタンスの生成

クラスの作成

class クラス名 end

  • クラス名は頭文字大文字。
  • initializeメソッド:インスタンス作成時に自動で呼び出されるメソッド。
  • プロパティは@で定義。
クラスの作成
class User
    def initialize(name)
        @name = name
    end

    def say_name
        puts "私は#{@name}です。"
    end

end


インスタンスの生成

変数 = クラス名.new(引数)

インスタンスの生成
tanaka = User.new("tanaka")
tanaka.say_name

#私はtanakaです。


yamada = User.new("yamada")
yamada.say_name

#私はyamadaです。



以上。

1
3
1

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
1
3