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