From murdoch.duncan at gmail.com  Tue Jun 30 14:20:27 2015
From: murdoch.duncan at gmail.com (Duncan Murdoch)
Date: Tue, 30 Jun 2015 14:20:27 +0200
Subject: [Rd] Defining a `show` function breaks the print-ing of S4
 object -- bug or expected?
In-Reply-To: <CABdHhvEVbdbNKUswtqENgfy1L4yQDOEEKyO--ft+x7f2M+ALPg@mail.gmail.com>
References: <CA+j8Z+=233OjOe00qV+5MdF9kkkVrWh4wfmUeAzwb4Q12DSxew@mail.gmail.com>
	<CABdHhvEVbdbNKUswtqENgfy1L4yQDOEEKyO--ft+x7f2M+ALPg@mail.gmail.com>
Message-ID: <5592898B.5000103@gmail.com>

On 30/06/2015 1:57 PM, Hadley Wickham wrote:
> A slightly simpler formulation of the problem is:
> 
> show <- function(...) stop("My show!")
> methods::setClass("Person", slots = list(name = "character"))
> methods::new("Person", name = "Tom")
> #> Error in (function (...)  : My show!

Just to be clear:  the complaint is that the auto-called show() is not
methods::show?  I.e. after

x <- methods::new("Person", name = "Tom")

you would expect

show(x)

to give the error, but not

x

??

Duncan Murdoch

> 
> Hadley
> 
> On Tue, Jun 30, 2015 at 9:02 AM, Dean Attali <daattali at gmail.com> wrote:
>> Hi r-devel
>>
>> If you define a function named `show` or attach a package with an exported
>> `show` function, then printing/vieweing S4 objects breaks. This is probably
>> because the `print` function calls `show`, which is now masked.
>>
>> Example:
>>
>> show <- function() {}
>>> setClass("Person", slots = list(name = "character"))
>>> tom <- new("Person", name = "Tom")
>>> tom # error
>>> methods::show(tom) # works
>>
>>
>> The error was a surprise to me because  I was under the assumption that
>> `show` would be namespaced and therefore should not break.
>> I'm wondering if this is intended behaviour, or if this is a problem.  My
>> intuition, and Hadley agreed on Twitter, is that defining a `show` method
>> should not have such a grave effect on printing S4 objects.
>>
>> Thanks
>>
>> ---
>> http://deanattali.com
>>
>>         [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-devel at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
> 
> 
>



[Rd] Defining a `show` function breaks the print-ing of S4 object -- bug or expected?
Duncan Murdoch