Ruby Koans メモ

Ruby Koansが勉強になって面白いです

メモ(更新中)



object_id

共通

false.object_id # => 0 
true.object_id  # => 2 
nil.object_id   # => 4 

Windows XP
ruby 1.9.2p136 (2010-12-25) [i386-mingw32]

fixmin  = -2**30  # => -1073741824
fixmax  = 2**30-1 # => 1073741823
range   = -> base, width=1 { (base-width..base+width).to_a }
l_range = range[fixmin]
u_range = range[fixmax]
p nums  = l_range + u_range

fexpr   = -> num { num * 2 + 1}
cond    = -> expr, num { expr[num] == num.object_id }.curry
f_cond  = cond[fexpr]

nums.group_by(&f_cond)
# => {false=>[-1073741825, 1073741824], true=>[-1073741824, -1073741823, 1073741822, 1073741823]}

Mac OS X 10.6.6
ruby 1.9.2p136 (2010-12-25 revision 30365) [x86_64-darwin10]

fixmin  = -2**62  # => -4611686018427387904
fixmax  = 2**62-1 # => 4611686018427387903 
range   = -> base, width=1 { (base-width..base+width).to_a }
l_range = range[fixmin]
u_range = range[fixmax]
p nums  = l_range + u_range

fexpr   = -> num { num * 2 + 1}
cond    = -> expr, num { expr[num] == num.object_id }.curry
f_cond  = cond[fexpr]

nums.group_by(&f_cond)
# => {false=>[-4611686018427387905, 4611686018427387904], true=>[-4611686018427387904, -4611686018427387903, 4611686018427387902, 4611686018427387903]} 



Array#[]
self[start, length] -> Array | nil

  1. lenghtが負の時は nil
  2. startと配列サイズ以下で、かつlengthが0の場合は []
  3. startと配列サイズが等しい場合は [] (lengthは0以上)
  4. startと配列サイズより大きい場合は nil (lengthは0以上)
a = [ "a", "b", "c", "d", "e" ] 
a[0, -1]  # => nil 
a[0, 0]   # => [] 
a[0, 1]   # => ["a"] 
a[0, 2]   # => ["a", "b"] 
a[0, 10]  # => ["a", "b", "c", "d", "e"] 
a[4, -1]  # => nil 
a[4, 0]   # => [] 
a[4, 1]   # => ["e"] 
a[4, 2]   # => ["e"] 
a[4, 10]  # => ["e"] 
a[5, -1]  # => nil 
a[5, 0]   # => [] 
a[5, 1]   # => [] 
a[5, 2]   # => [] 
a[5, 10]  # => [] 
a[6, -1]  # => nil 
a[6, 0]   # => nil 
a[6, 1]   # => nil 
a[6, 2]   # => nil 
a[6, 10]  # => nil