2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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. 小数点の表示桁数指定
    7. format(または sprintf)
    8. round, ceil, floorメソッド
  7. 文字列
    10. 式展開
    11. 連結
    12. 繰り返し
    13. 文字数カウント(.length)
    14. 文字列から数値に変換(.to_i)
  8. 配列
    11. 配列の要素取得
    12. 要素追加(push or <<)
    13. 配列の長さ取得(size, length, count)
    14. ソート
  9. ハッシュオブジェクト
    12. 作成と呼び出し
    13. 要素追加
    14. 要素削除(.delete(:キー名))
  10. 条件分岐
    13. if
    14. case,when
  11. 繰り返し
    14. for in
    15. each do
    16. while
    17. times do
    18. loop + break
    19. スキップ(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です。

以上。
2
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
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?