てみブログ

てみブログ

個人的な覚書用です

Ruby 基本文法

コメントアウト

「#」でコメントアウトする。

# コメント

コンソール出力

puts "Hello World"

文字列はシングルクォートかダブルクォートで囲む

数値演算

puts 5 + 2    #>7
puts 5+2      #>7  スペースは必須でない模様
puts "5 + 2"   #>5 + 2

変数定義

name = "hogehoge"

変数展開

puts "こんにちは#{name}さん。"
# >こんにちはhogehogeさん。

変数展開する場合はダブルクォートを使う。 シングルクォートだと変数展開されない。

puts 'こんにちは#{name}さん。'
# >こんにちは#{name}さん。

IF文

if score > 80
  puts "優秀"
elsif score > 60
  puts "合格"
else
  puts "不合格"
end

比較演算子
==, !=, <, >, <=. >=
AND条件 &&
OR条件 ||

配列

animals = ["dog", "cat", "rat"]  
  
puts animals
#>dog
#>cat
#>rat

puts animals[0]
#>dog

配列のeach取り出し

animals.each do |animal|
  puts "#{animal}です。"
end

#>dogです。
#>catです。
#>ratです。

ハッシュ(dictionaryに相当する。キーバリューペア)

dog = {"name" => "pochi", "age" => 5}

puts dog
#>{"name" => "pochi", "age" => 5}

puts dog["name"]
#>pochi

更新

dog["age"] = 7

要素追加

dog["breed"] = "shiba"

シンボル(:)を使う

ハッシュのキーによく使われる。
扱い上は文字列と同じようになる。
シンボルで定義した場合、呼び出しもシンボルで行う。

dog = {"name" => "pochi", "age" => 5}
dog = {:name => "pochi", :age => 5}

シンボルでキーを書くとき、さらに省略できる。
これが一般的に使われる。

dog = {name: "pochi", age: 5}

呼び出しはシンボル使用

puts dog[:name]
#>pochi

存在しないキーを指定(nil

存在しないキーを指定した場合にはnilが返される。
putsしても何も表示されない。
if条件ではfalseの扱いとなる。

ハッシュ配列の呼び出し

animals = [
  {name: "pochi", age: 5}
  {name: "tama", age: 3}
  {name: "mike", age: 7}
]

puts animals[0][:name]
#>pochi

メソッド(自作関数)

#定義
def method1(arg1, arg2)
  puts arg1
  puts arg2
  return true
end

#呼び出し
result = method1(10,"hogehoge")
#>10
#>hogehoge

puts result 
#>true

キーワード引数

メソッド呼び出し時の引数に、名称を指定するようにする。
順序に関係なく記載できるようになる。
メソッド側と呼び出し側で書式を合わせる必要がある。

def method1 (arg1:, arg2:)
  puts "fugafuga"
end

mothod1(arg2:"hogehoge", arg1:10)

クラス定義

class MyClass
  attr_accessor :name
  # attr_accessorシンボルを使って、
  # nameというインスタンス変数を持たせる。
end

クラスの利用

#クラスインスタンスの生成
class1 = MyClass.new

#インスタンス変数に値を格納
class1.name = "hogehoge"

puts class1.name
# >hogehoge

クラス内でメソッドを定義

class MyClass
  attr_accessor :name

  def introduce(age)
    return "#{self.name}です。#{age}歳です。"
  end
end

#呼び出し
class1 = MyClass.new
class1.name = "hogehoge"
puts class1.introduce(10)
# >hogehogeです。10歳です。

initializeメソッド

生成時に実行されるメソッド

class MyClass
  attr_accessor :name

  def initialize
    puts "クラスが生成されました。"
    self.name = "未定"
  end
end

#initializeメソッドも引数を受け取れる。
class1 = MyClass.new(arg1, arg2)

入力を受け付ける。

#テキスト入力
name = gets.chomp

#数値入力(数値に型キャスト)
number =gets.chomp.to_i

なお、getsだけだと入力値の後ろに改行がつく。
chompにより改行が消せる。

クラスの継承

#別ファイルを読み込む(別ファイルに定義したクラスを使えるようにする。)
require "./file1"
#file1.rbを使用。パスは階層に応じて記載。

#MyClassを継承したMyChildClassを作成する。
class MyChildClass < <MyClass
end