💎

Ruby入門 ~基礎編~

4 min read

ruby is 何?

Rubyとは「Matz」の愛称でおなじみのまつもとゆきひろさんによって開発されたプログラミング言語である。
公式サイトによると「オープンソースの動的なプログラミング言語で、 シンプルさと高い生産性を備えています。 エレガントな文法を持ち、自然に読み書きができます。」と説明されている。


出力

puts以降が出力される

puts “Hello World

コメントアウト

プログラムには影響を与えないメモを残すときに以下の記法が使用可能である

  • 行の中で「#」より右がコメントとなる
  • 「=begin」と「=end」で挟まれた行がコメントとなる
#コメント

#以下に挟まれた行はすべてコメントとなる
=begin
コメント
コメント
=end

データ型

rubyで扱うデータ型には以下のものなどがある

  • str
    文字列型
  • int
    整数型
  • float
    浮動小数点型
  • Bool
    真偽型

文字列連結

文字列連結とは文字列型のデータを結合することである

#下の2つは連結というよりは追加
A + B
A . contact(B)
A << B

四則演算

  • 加算
A + B
  • 減算
A - B
  • 乗算
A * B
  • べき乗
A ** B
  • 除算
A / B
  • 剰余
    剰余とは割り算の余りのこと
A % B

計算の優先順位は 剰除 > 加減。( )をつければ優先度が上がる。


比較演算子

比較演算子とは2つの値の大きさなどの関係性を比較するときに使用できる演算子である

A == B #AとBは等しい
A > B  #AはBより大きい
A >= B #AはB以上
A != B #等しくない

変数

変数とは値を代入することができるものであり、数学でいうところの「変数x」と同じような扱いをすることができる。
変数には命名規則があり、最初の1文字目は「大文字」「数字」以外で命名しなければならない。
また、変数には「スコープ」と呼ばれる有効範囲が存在する。
出力の場合には、#{name}、#{@@name}と書く。

hensuu = ‘文字’
puts "#{hensuu}などを追加"
  • ローカル変数
    小文字もしくは_(アンダースコア)で始める。
    変数のスコープはメソッド内のみである。
    Ex)name
  • グローバル変数
    $から始まる変数名を用いる
    プログラムのどこからでも参照可能。融通がきかないため一般的に好まれない。
    Ex)$name
  • インスタンス変数
    @から始まる変数名を用いる。
    同じインスタンス内であればメソッドの定義を超えて参照、変更できる。
    Ex)@name
  • クラス変数
    @@から始まる変数名を用いる
    そのクラスのすべてのインスタンスから参照、変更できる。
    Ex)@@name
  • 疑似変数
    self
    true
    false
    nil

繰り返し

  • for文
for i in 010 do #doは省略可能
    #実行文
end

a...b (bを含まない)
a..b (bを含む)
カウンタ変数「i」には in の後ろの数字が順順に代入される

  • while文
while 条件式
    #実行文
end

for文とは異なりカウンタ変数を自分で用意しなければならない

入力の数だけループさせたい時

while str = gets
  # 実行文
end

条件文(制御文)

上から順番に条件に当てはまるかチェックしていき当てはまった場所の処理を実行し、それ以下の処理は実行されない。

  • && のことを論理積という
    条件Aも条件Bもtrueのとき
  • || のことを論理和という
    条件Aまたは条件Bがtrueの時
a = ‘hoge’
if a == ‘hoge’ || a == ‘hogee’
  # 実行文 1
elsif a == ‘moge’ && a == ‘mogee’
  # 実行文 2
else 
  # 実行文 3
end

if文では条件式が真かどうかで実行する処理が決まるが、「unless文」では条件式が偽かどうかで実行する処理を決める

elseifはunless文では使用できない

a = hoge
unless a == ‘hoge’
    # 条件式が偽の時に実行される
else
    #条件式が真の時に実行される 
end
  • 後置き条件
a = ‘hoge’
if a == ‘hoge’     #条件文
unless a == ‘moge’ #条件文

配列

配列は変数とよく似ていて、任意の配列名を付けてデータを格納することが可能である
ここまでは変数と同じだが、変数と違う点として「複数のデータを格納できる」という点が挙げられる
また、配列の中のデータのことを要素という

配列は以下のように定義できる

arr = Array.new( int(要素の個数), 要素の中身 )
arr = [ ]
arr = [ ‘ hoge’ , ’ moge ’, 100 ]
puts arr[0] #キーが0のものを出力

「.each」メソッドを使うことで配列の中身を順番に取り出すループを実行することができる

arr.each do |value|
  #実行文
  #puts value
end

#キーも取り出したい場合には「.eachwithindex」というメソッドを使用する
arr.eachwithindex do |value, index| 
  #実行文
  #puts index
end
  • 要素の数を取得
arr.length
  • 要素を削除
arr.delete( 要素を指定 )
  • 要素を削除
arr.delete_at( キーを指定 )
  • 末尾に追加・削除
arr.push  #追加
array.pop #削除
  • 先頭に追加・削除
arr.unshift #追加
array.shift #削除
for i in arr
  puts i
end
#iには配列の要素が順番に代入される
  • ソート
    あいうえお順、数字順 → .sort
    あいうえお逆順 → .sort.reverse

漢字やカタカナを含む場合には注意が必要


連想配列(ハッシュ)

  • ハッシュの作り方
arr = {“math” => 71,Japanese=> 66}

#「:(シンボル)」を使って定義することも可能
arr = {:math => 71, :Japanese => 66 }

#シンボルを使うことで「=>」を省略することも可能
arr = {math: 71, Japanese: 66}
  • ハッシュの操作
#ハッシュの追加・変更
arr [Science] = 100

#ハッシュの削除
arr.delete(Science)

#要素のとりだし
arr.each_value do |value|
  # 実行文
end

#キーと要素の取り出し
arr.each do |key, value|
  # 実行文
end
  • ソート
    .sort キーのあいうえお順
    .sort_by { | k, v | v } キーと要素を取り出し要素でソート

  • シンボル
    キーにコロンをつけることで色々と省略できる

arr = { :Japanese => 66, :Math => 80,}
arr = { Japanese: 66, Math: 100,}

配列とはことなり{ }で囲う

キーのないものを指定したとしてもエラーは吐き出さず何も表示されない


多次元配列

arr = Array.new(4).map{Array.new(3, 1)}

.mapメソッドを使用して創らないと変更があった時に全ての配列で変更が起こってしまう


関数(メソッド)

def add(a, b)
  sum = a + b
  return sum
end
sum = add(1, 2)

真偽値を返すメソッドの場合には関数の末尾に「?」をつける慣習がある

def compare_numbers?(num)
	return num > 0
end

キーワード引数
メソッドの引数の前にキーワードをつけることで可読性を上げることができる

def display_user_info(name:, age:, gender)
	puts "#{age}歳の#{gender}性の#{name}と申します"
end 
display_user_info(name:Oz, age:25, gender:”男”)

正規表現

正規表現とは、いくつかの文字列を一つのものとして表現する方法であり、特定の文字列の検索などで利用されることが多い。
正規表現オブジェクトを作成するためには//で囲む。
ex) /pattern/

  • パターンに最初にマッチした部分のみを置き換える
.sub(pattern, replacement)
  • パターンにマッチするすべてのものを置き換える
.gsub(pattern, replacement)

コードブロック

ブロックとは、メソッド呼び出しの時に、対象データに渡すことのできる処理のかたまり。

ブロックの中で定義された変数はプロックの外では使用できない

Discussion

ログインするとコメントできます