オブジェクトとか
# オブジェクトとメソッド
x = "hello" # これもオブジェクト
a = 10.8 # これもオブジェクト
n = x.length # オブジェクトのメソッド
p x # "hello"
puts n # 5
p "aaaaaa".length # 6
y = Rational(2,n)
puts y # 2/5
puts y+Rational(n,2) # 29/10
z = "123"
p z # "123"
p z.to_i # 123
puts z.to_i * 5 # 615
puts a.round # 11 (四捨五入)
puts 11.3.ceil # 12 (切り上げ)
puts 11.3.floor # 11 (切り捨て)
p rand(100) # 1~100の乱数
p Math.sqrt(2) # 1.41421356...
puts "hello\nworld\n" # 特殊文字を展開 (\nで改行される)
puts 'hello\nworld\n' # 特殊文字を展開しない (\nがそのまま表示される)
puts "x is #{x}" # x is hello
puts "abcdef".reverse # fedcba
puts "abcdef".index("d") # 3
puts "abcdef".include?("e") # true
puts "abcdef".include?("g") # false
## 破壊的メソッド
x1 = x.upcase # 大文字にするメソッド
p x # "hello"
p x1 # "HELLO"
x2 = x.upcase! # xの方も変わる(破壊的メソッド)
p x # "HELLO"
p x2 # "HELLO"
## 配列オブジェクト
array = [1, 2.11, "hello", 1==1]
p array
puts array[1] # 2.11
array[2] = "world"
puts array[3] # true
puts array[4] # nil (表示されない)
puts array[-2] # world
p array[1..3] # [2.11,"world",true]
p array[1...3] # [2.11,"world"]
array[1,2] = ["aaaa",3.14]
p array # [1, "aaaa", 3.14, true]
array[1,0] = ["add",100] # [1, "add", 100, "aaaa", 3.14, true]
p array
arr1 = [1,3,5,7,9]
arr2 = [2,3,5,7,11]
p arr1 & arr2 # [3, 5, 7]
p arr1 | arr2 # [1, 3, 5, 7, 9, 2, 11]
p arr1 + arr2 # [1, 3, 5, 7, 9, 2, 3, 5, 7, 11]
p arr1 - arr2 # [1, 9]
p (arr1 + arr2).uniq # 1, 3, 5, 7, 9, 2, 11]
p (arr1 + arr2).uniq.sort # [1, 2, 3, 5, 7, 9, 11]
arr3 = [4,1,5,8,2]
p arr3.unshift 3 # [3, 4, 1, 5, 8, 2]
p arr3.push 0 # [3, 4, 1, 5, 8, 2, 0]
arr3.shift
p arr3 # [4, 1, 5, 8, 2, 0]
arr3.pop
p arr3 # [4, 1, 5, 8, 2]
# ハッシュオブジェクト(連想配列)
map = {"a"=>100, "b"=>250, "c"=>500}
p map["a"] # 100
p map.size # 3
p map.empty? # false
p map.has_key?("c") # true
p map.has_value?(200) # false
# 日付時間とか
t = Time.now
p t # 2013-12-01 14:40:20 +0900
p t.year # 2013
p t.month # 12
t2 = Time.mktime(2040,12,31,23,59,59)
p t2 #2040-12-31 23:59:59 +0900
p t2+1 # 2041-01-01 00:00:00 +0900
p t.strftime("%Y/%m/%d") # 2013/12/01