[#796] Re: value of assignment (Re: Order of the value of an expression changed? (PR#579)) — Sean Chittenden <sean@...>

> sean@chittenden.org wrote:

33 messages 2003/02/06
[#798] Re: value of assignment (Re: Order of the value of an expression changed? (PR#579)) — matz@... (Yukihiro Matsumoto) 2003/02/06

Hi,

[#826] Re: value of assignment (Re: Order of the value of an expression changed? (PR#579)) — Sean Chittenden <sean@...> 2003/02/10

> |I have read the thread and I think this is a pretty bad change. I

[#827] Re: value of assignment (Re: Order of the value of an expression changed? (PR#579)) — nobu.nokada@... 2003/02/10

Hi,

[#828] Re: value of assignment (Re: Order of the value of an expression changed? (PR#579)) — Sean Chittenden <sean@...> 2003/02/11

> > #BEGIN test.rb

[#829] Re: value of assignment (Re: Order of the value of an expression changed? (PR#579)) — matz@... (Yukihiro Matsumoto) 2003/02/11

Hi,

[#830] Re: value of assignment (Re: Order of the value of an expression changed? (PR#579)) — Sean Chittenden <sean@...> 2003/02/11

> |What was wrong with having the receiver set the return value though?

[#834] Re: value of assignment (Re: Order of the value of an expression changed? (PR#579)) — Matt Armstrong <matt@...> 2003/02/11

Sean Chittenden <sean@chittenden.org> writes:

[#835] Re: value of assignment (Re: Order of the value of an expression changed? (PR#579)) — Sean Chittenden <sean@...> 2003/02/11

> > f = Foo.new()

[#801] class of $1, $2 in 1.8.0 — dblack@...

Hi --

31 messages 2003/02/07
[#802] Re: class of $1, $2 in 1.8.0 — nobu.nokada@... 2003/02/07

Hi,

[#803] Re: class of $1, $2 in 1.8.0 — dblack@... 2003/02/07

Hi --

[#804] Re: class of $1, $2 in 1.8.0 — matz@... (Yukihiro Matsumoto) 2003/02/07

Hi,

[#805] Re: class of $1, $2 in 1.8.0 — dblack@... 2003/02/07

Hi --

[#806] Re: class of $1, $2 in 1.8.0 — "J.Herre" <jlst@...> 2003/02/07

[#807] Re: class of $1, $2 in 1.8.0 — Matt Armstrong <matt@...> 2003/02/07

J.Herre <jlst@gettysgroup.com> writes:

[#808] Re: class of $1, $2 in 1.8.0 — dblack@... 2003/02/07

Hi --

[#809] Re: class of $1, $2 in 1.8.0 — Ryan Pavlik <rpav@...> 2003/02/07

On Sat, 8 Feb 2003 06:52:17 +0900

[#810] Re: class of $1, $2 in 1.8.0 — dblack@... 2003/02/07

Hi --

[#889] Bob Jenkins' hashing implementation in Ruby — Mauricio Fern疣dez <batsman.geo@...>

16 messages 2003/02/28
[#892] Re: Bob Jenkins' hashing implementation in Ruby — ts <decoux@...> 2003/03/01

>>>>> "M" == Mauricio Fern疣dez <Mauricio> writes:

[#893] Re: Bob Jenkins' hashing implementation in Ruby — Mauricio Fern疣dez <batsman.geo@...> 2003/03/01

On Sat, Mar 01, 2003 at 08:42:40PM +0900, ts wrote:

Re: class of $1, $2 in 1.8.0

From: dblack@...
Date: 2003-02-07 16:05:34 UTC
List: ruby-core #805
Hi --

On Sat, 8 Feb 2003, Yukihiro Matsumoto wrote:

> Hi,
>
> In message "Re: class of $1, $2 in 1.8.0"
>     on 03/02/07, dblack@candle.superlink.net <dblack@candle.superlink.net> writes:
>
> |Doesn't that kind of cascading (i.e., subclassing and overriding) take
> |place all the time?  It seems very natural to me.  Also, until 1.8.0
> |this wasn't a problem; it's only now that the class of the objects has
> |changed.  I'm still not sure what the reason is for the change.  It
> |can't be just to catch people like me who override methods :-)
>
> Could you describe your error with concrete code?

Sure.  I'll give a simplified (but working) example, so as to avoid
the whole underlying scanf architecture:

  class SpecializedString < String
    def to_i(s)
      # specialized overriding of to_i
    end
  end

  s = SpecializedString.new("12345")
  m = /(\d\d)/.match(s)
  n = m[1].to_i
  p n * 10

With 1.6.8:

  120

With 1.8.0:

  matches.rb:22:in `to_i': wrong number of arguments(0 for 1)
    (ArgumentError)

(because m[1] is a SpecializedString object, so the specialized to_i
gets called).

Note also that if the implementation of SpecializedString changes,
then the behavior of #match also changes:

  class SpecializedString
    def initialize(s)
      @string = s
    end
    def to_str
      @string
    end
  end

Now String#to_i gets called in 1.8.0 as well as 1.6.8.

My thinking is: if $1,$2... are canonicalized to String, the behavior
wouldn't change, and a new SpecializedString can always be created
from a String.


David

-- 
David Alan Black
home: dblack@candle.superlink.net
work: blackdav@shu.edu
Web:  http://pirate.shu.edu/~blackdav


In This Thread