Quantcast

initFields() method no longer coerces arguments in R-devel

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

initFields() method no longer coerces arguments in R-devel

Jon Clayden
Dear all,

I've just had a package update bounced from CRAN because of a recent
change in R-devel which seems to affect the behaviour of the
initFields() reference class method. (The change must be very recent
because I tested the package on a week-old build of R-devel.) It seems
that the method no longer coerces its arguments to the expected type
of each field. For a simple example:

> Foo <- setRefClass("Foo", fields=list(number="integer"), methods=list(initialize=function (number = NULL) initFields(number=number)))
> Foo$new()
Error in function (value)  :
  invalid replacement for field ‘number’, should be from class
“integer” or a subclass (was class “NULL”)

(This used to work, with "number" being set to "integer(0)"). In fact
it is now extremely strict, not even allowing a double literal which
is equal to an integer:

> Foo$new(number=1)
Error in function (value)  :
  invalid replacement for field ‘number’, should be from class
“integer” or a subclass (was class “numeric”)

I don't see anything about this in the NEWS, so I was wondering if I
could get clarification on whether this is now the intended behaviour,
before I further modify the package. I must say that this will be a
bit of a pain to "correct"...

All the best,
Jon

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: initFields() method no longer coerces arguments in R-devel

Simon Urbanek
It's worth actually reading the list you post to ...
http://r.789695.n4.nabble.com/Reference-classes-assignments-to-fields-td3708168.html


On Aug 5, 2011, at 6:41 AM, Jon Clayden wrote:

> Dear all,
>
> I've just had a package update bounced from CRAN because of a recent
> change in R-devel which seems to affect the behaviour of the
> initFields() reference class method. (The change must be very recent
> because I tested the package on a week-old build of R-devel.) It seems
> that the method no longer coerces its arguments to the expected type
> of each field. For a simple example:
>
>> Foo <- setRefClass("Foo", fields=list(number="integer"), methods=list(initialize=function (number = NULL) initFields(number=number)))
>> Foo$new()
> Error in function (value)  :
>  invalid replacement for field ‘number’, should be from class
> “integer” or a subclass (was class “NULL”)
>
> (This used to work, with "number" being set to "integer(0)"). In fact
> it is now extremely strict, not even allowing a double literal which
> is equal to an integer:
>
>> Foo$new(number=1)
> Error in function (value)  :
>  invalid replacement for field ‘number’, should be from class
> “integer” or a subclass (was class “numeric”)
>
> I don't see anything about this in the NEWS, so I was wondering if I
> could get clarification on whether this is now the intended behaviour,
> before I further modify the package. I must say that this will be a
> bit of a pain to "correct"...
>
> All the best,
> Jon
>
> ______________________________________________
> [hidden email] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
>

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: initFields() method no longer coerces arguments in R-devel

John Chambers-2
There is also an item in the NEWS file:

     Field assignments in reference classes are now consistent with
slots in S4 classes: the assigned value must come from the declared
class (if any) for the field or from a subclass.

On 8/5/11 7:24 AM, Simon Urbanek wrote:

> It's worth actually reading the list you post to ...
> http://r.789695.n4.nabble.com/Reference-classes-assignments-to-fields-td3708168.html
>
>
> On Aug 5, 2011, at 6:41 AM, Jon Clayden wrote:
>
>> Dear all,
>>
>> I've just had a package update bounced from CRAN because of a recent
>> change in R-devel which seems to affect the behaviour of the
>> initFields() reference class method. (The change must be very recent
>> because I tested the package on a week-old build of R-devel.) It seems
>> that the method no longer coerces its arguments to the expected type
>> of each field. For a simple example:
>>
>>> Foo<- setRefClass("Foo", fields=list(number="integer"), methods=list(initialize=function (number = NULL) initFields(number=number)))
>>> Foo$new()
>> Error in function (value)  :
>>   invalid replacement for field ‘number’, should be from class
>> “integer” or a subclass (was class “NULL”)
>>
>> (This used to work, with "number" being set to "integer(0)"). In fact
>> it is now extremely strict, not even allowing a double literal which
>> is equal to an integer:
>>
>>> Foo$new(number=1)
>> Error in function (value)  :
>>   invalid replacement for field ‘number’, should be from class
>> “integer” or a subclass (was class “numeric”)
>>
>> I don't see anything about this in the NEWS, so I was wondering if I
>> could get clarification on whether this is now the intended behaviour,
>> before I further modify the package. I must say that this will be a
>> bit of a pain to "correct"...
>>
>> All the best,
>> Jon
>>
>> ______________________________________________
>> [hidden email] mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>
>>
> ______________________________________________
> [hidden email] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: initFields() method no longer coerces arguments in R-devel

Jon Clayden
OK, apologies - on both fronts I obviously searched on the wrong
terms. Sorry to waste your time.

Jon


On 5 August 2011 18:22, John Chambers <[hidden email]> wrote:

> There is also an item in the NEWS file:
>
>    Field assignments in reference classes are now consistent with slots in
> S4 classes: the assigned value must come from the declared class (if any)
> for the field or from a subclass.
>
> On 8/5/11 7:24 AM, Simon Urbanek wrote:
>>
>> It's worth actually reading the list you post to ...
>>
>> http://r.789695.n4.nabble.com/Reference-classes-assignments-to-fields-td3708168.html
>>
>>
>> On Aug 5, 2011, at 6:41 AM, Jon Clayden wrote:
>>
>>> Dear all,
>>>
>>> I've just had a package update bounced from CRAN because of a recent
>>> change in R-devel which seems to affect the behaviour of the
>>> initFields() reference class method. (The change must be very recent
>>> because I tested the package on a week-old build of R-devel.) It seems
>>> that the method no longer coerces its arguments to the expected type
>>> of each field. For a simple example:
>>>
>>>> Foo<- setRefClass("Foo", fields=list(number="integer"),
>>>> methods=list(initialize=function (number = NULL) initFields(number=number)))
>>>> Foo$new()
>>>
>>> Error in function (value)  :
>>>  invalid replacement for field ‘number’, should be from class
>>> “integer” or a subclass (was class “NULL”)
>>>
>>> (This used to work, with "number" being set to "integer(0)"). In fact
>>> it is now extremely strict, not even allowing a double literal which
>>> is equal to an integer:
>>>
>>>> Foo$new(number=1)
>>>
>>> Error in function (value)  :
>>>  invalid replacement for field ‘number’, should be from class
>>> “integer” or a subclass (was class “numeric”)
>>>
>>> I don't see anything about this in the NEWS, so I was wondering if I
>>> could get clarification on whether this is now the intended behaviour,
>>> before I further modify the package. I must say that this will be a
>>> bit of a pain to "correct"...
>>>
>>> All the best,
>>> Jon
>>>
>>> ______________________________________________
>>> [hidden email] mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>>
>>>
>> ______________________________________________
>> [hidden email] mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>
>
> ______________________________________________
> [hidden email] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Loading...