From: Ricky Ng Date: 2015-02-10T17:54:52-06:00 Subject: [ruby-core:68085] Re: [Ruby trunk - Bug #10845] [Open] Subclassing String Hmm, guessing that '+' and '%' are being a bit weird... Verified the some thing happens in: ruby 2.0.0p481 It does look like '<<' is working (or not working) though. irb(main):007:0> MyString.new("foo").<<("foo").class => MyString On Tue, Feb 10, 2015 at 5:41 PM, wrote: > Issue #10845 has been reported by Tsuyoshi Sawada. > > ---------------------------------------- > Bug #10845: Subclassing String > https://bugs.ruby-lang.org/issues/10845 > > * Author: Tsuyoshi Sawada > * Status: Open > * Priority: Normal > * Assignee: > * ruby -v: 2.2 > * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN > ---------------------------------------- > If I make a subclass of `String`, the method `*` returns an instance of that class. > > ~~~ruby > class MyString < String > end > > MyString.new("foo").*(2).class #=> MyString > ~~~ > > This is different from other similar operations like `+` and `%`, which return a `String` instance. > > ~~~ruby > MyString.new("foo").+("bar").class #=> String > MyString.new("%{foo}").+(foo: "bar").class #=> String > ~~~ > > I don't see clear reason why `*` is to be different from `+` and `%`, and thought that perhaps either the behaviour with `*` is a bug, or the behaviour with `+` and `%` is a bug. > > Or, is a reason why they are different? > > > > -- > https://bugs.ruby-lang.org/ -- Incoherently, Ricky Ng