Hi all,
This is a summary of ruby-dev ML in these days.
(ruby-dev 23459-23487 + 23488-23562)
[ruby-dev:23465] Re: [ruby-talk:99318] 0.0000000000000000001 == 0.0 should be false
As matz said in [ruby-talk:99375], H.Yamamoto made a patch
on the problem of [ruby-talk:99318] and commited it.
– TAKAHASHI Masayoshi
[ruby-dev:23511] [Oniguruma] Version 3.0.0
K.Kosako released Oniguruma 3.0.0.
New features of this release are:
* UTF-16 BE, LE support
* works with ruby 1.9 only (1.6/1.8 supported is removed)
[ruby-dev:23520] DBM::READER
Tanaka Akira proposed a new flag DBM::READER, to open a DBM in
read-only mode. Matz agreed with him and the patch is incorporated.
[ruby-dev:23533] specifications of parameters and variables in Ruby 2.0
SASADA Koichi posted a summary of the latest specifications of method
parameters, block parameters and block variables that he heard from matz.
[Local Variables]
-
Local variables are method-local.
-
Block parameters are block-local.
-
The name space of local variables and one of block parameters are
exclusive. e.g.i = 1
iter {|i| # causes error
…
}
[Return Values and Parameter Passing]
-
return a, b',
yield a, b’ and `*array’ makes a Values object.return 1, 2 --> Values(1,2)
yield 1, 2 --> Values(1,2)
*[1, 2] --> Values(1,2) -
Multiple assignment takes care of only Values objects.
a, b = 1 # a=1, b=nil
a, = 1 # a=1
a, * = 1 # a=1
*a = 1 # a=[1]- = 1 # (ignored)
a = 1 # a=1
a, b = Values(1,2) # a=1, b=2
a, = Values(1,2) # a=1
a, * = Values(1,2) # a=1
*a = Values(1,2) # a=[1,2] - = Values(1,2) # (ignored)
a = Values(1,2) # a=Values(1,2)
def yieldSingle
yield 1
endyieldSingle {|a,b| } # error / a=1, b=nil (not decided yet)
yieldSingle {|a, | } # a=1
yieldSingle {|a,*| } # a=1
yieldSingle {|*a| } # a=[1]
yieldSingle {|a| } # a=1def yieldValues
yield 1,2
endyieldValues {|a,b| } # a=1, b=2
yieldValues {|a, | } # error / a=1 (not decided yet)
yieldValues {|a,*| } # a=1
yieldValues {|*a| } # a=[1,2]
yieldValues {|a| } # error - = 1 # (ignored)
[Block Parameters]
-
Allows Proc#call to take a block.
def m(&block)
block.call { p “OK” }
end
m {|&b| b.call } #=> “OK”
[Keyword Arguments]
-
Syntax
def m(a, b=nil, *rest, c:val, **krest)
p a #=> 1
p b #=> 2
p rest #=> [3, 4, 44, 444]
p c #=> 55
p krest #=> {:d => 66, :e => 77, :f => 88}
endarray = [4, 44, 444]
hash = {e: 77, f: 88}
m(1, 2, 3, *array, c:55, d:66, **hash) -
Lambda blocks MIGHT accept keyword arguments.
(makes `lambda’ a reserved word?)
– Minero Aoki
ruby-dev summary index:
http://i.loveruby.net/en/ruby-dev-summary.html