夏休みにrubyやることになったので、自分メモを記述していく
公式サイト
https://www.ruby-lang.org/ja/
コアリファレンス
http://ruby-doc.org/core-2.2.2/
print "hoge" # 終わったあとに改行がない
puts "hoge" # 改行がある
p "hoge" # データの形式がわかるように表示
定数
全部大文字で書けばOK
文字列オブジェクト
- ダブルコーテーションとシングルコーテションで異なる点に注意する
name = "hoge"
x = "my name is #{name}\n" # 変数展開、特殊文字(\t \n)
y = 'my name is #{name}\n' # なんもならずに、そのまま表示される
破壊的メソッド、真偽値を返すメソッド
* 破壊的メソッドを使うと元の変数の値が書き換わる。
s = "hoge"
s.upcase!
puts s
=> "HOGE"
s = ""
x = s.empty? # ⇛空文字か検査
puts x
⇛ true
配列オブジェクト
array = [5, 8, 4]
p array[0..2] # 要素の0から2まで
⇛[5, 8, 4]
p array[0...2] # 0を起点に2つ
⇛[5, 8]
p array[-1] # 最後の1つ
⇛4
p array[1, 2] # 1番目の要素から2つぶん
[8, 4]
array = [5, 8, 4]
array[0...2] = [1, 2]
p array
⇛[1, 2, 4]
(要素の削除)
array[0, 2] = []
p array
⇛[4]
# なんか違和感あるけど、初期化される
(配列の末尾に要素追加)
array.push(100)
とか
array << 100 << 102
ハッシュオブジェクト
(波括弧ですよ!!)
array = {"hoge" => 200, "huga" => 300}
p array["hoge"]
⇛200
array = {:hoge => 200, :huga => 300}
p array[:hoge]
⇛200
array = {hoge: 200, huga: 300}
p array[:hoge]
⇛200
p array.has_key?(:hoge)
⇛true
%記法
下記が同じ感じで扱える
s = "ho\"ge"
s = %Q(ho"ge)
s = %(ho"ge) # Qは省略可能
s = 'ho\"ge'
s = %q(ho"ge)
a = ["a", "b", "c"]
put a
⇛["a", "b ", "c"]
a = %W[a b c]
put a
⇛["a", "b ", "c"]
真偽値
false : false nil(オブジェクトが存在しない)
true それ以外(0 ''を含む)
loop 処理
3.times do
put "hoge"
end
3.times do |i|
put "#{i}: hoge"
end
ループ制御
break
next # 他の言語でいうcontinue
each
["hoge", "fuga", "pero"].each do |x|
puts x
end
クラス
class User
@@ count = 0 # クラス変数
def initialize(name)
@name = name #インスタンス変数
@@count += 1
end
def sayHoge # インスタンスメソッド
puts "hogehoge"
end
def Person.SayFuga # クラスメソッド
puts "fugafuga"
end
attr_accessor : name # インスタンス変数nameに対するアクセサ
=begin
attr_reader : name # ゲッタ
attr_writer : name # セッタ
=end
end
-
newしてみる
tom = User.new("tom") -
クラスメソッド呼ぶ
User.sayFuga()
継承
class SuperUser < User