[#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-08 11:06:01 UTC
List: ruby-core #821
Hi --

On Sat, 8 Feb 2003 nobu.nokada@softhome.net wrote:

> Hi,
>
> At Sat, 8 Feb 2003 11:30:25 +0900,
> dblack@candle.superlink.net wrote:
> > > > This has possible implications for other classes:
> > > >
> > > >   candle:~/hacking/ruby$ irb --simple-prompt
> > > >   >> class A < Array; end; A.new.replace([1,2,3]).class
> > > >   => A
> > > >   >> class A < Array; end; A.new.replace([1,2,3]).map {|x| x}.class
> > > >   => Array
> > >
> > > Enumerable#map always returns Array regardless its receiver.
> >
> > Right -- I'm just wondering why the "regardless-of-receiver" principle
> > operates here but not with String#scan and others.  (And with
> > Regexp#match it's the class of the argument, not the receiver, that
> > determines the return value's class.)
>
> In this case, the returned object isn't concerned with the
> receiver.  Enumerable methods return Array incidentally.  OTOH,
> String#[], #scan and so on return the receivers' subcomponent.

OK, but why is a subcomponent always (logically) the same class as the
original?  See my Name/String example.  Here's another example:

  class FiveLetterWord < String
    def initialize(s)
      raise ArgumentError, "Wrong length word" unless s.size == 5
      super
    end

    def vowels
      scan(/[aeiou]/i)
    end
  end

  f = FiveLetterWord.new("black")
  v1 = f.vowels[0]
  p v1.class                      # FiveLetterWord
  p v1.size                       # 1

I guess the full OO thing to do would be to have a separate class
FiveLetterWord::Vowel.  But in the absence of that, I can't help
feeling that a sub-component of FiveLetterWord should be a String.

> I also sometimes want ways to override the class of returned
> object, but it's another story.

Sounds interesting -- let's hear it :-)


David

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


In This Thread