Changes
Website updates (https://rconsortium.github.io/OOP-WG/): refreshed readme, minutes as articles. Working on documentation overhaul in https://github.com/RConsortium/S7/pull/187.
-
new_generic()
now requiresdispatch_args
. This means thatnew_generic()
will typically be called without names:new_generic("foo", "x")
new_generic("foo", "x", function(x, y) call_method())
New
class_any
(could already define methods forS7_object
) andclass_missing
sentinels.-
When creating an object, unspecified properties are initialized with their default value (#67). To achieve this, the constructor arguments default to
class_missing
, sinceNULL
would prevent a default value ofNULL
, andmissing()
requires too many gymnastics.new_class("foo", properties = list(x = integer, y = double))@constructor
https://github.com/RConsortium/S7/blob/main/R/class.R#L209-L212
See other minor changes in
https://github.com/RConsortium/S7/blob/main/NEWS.md#feb-2022
Discussion
- Rename
method_call()
? https://github.com/RConsortium/S7/issues/200 —S7_dispatch()
sounds good. - Abstract classes? https://github.com/RConsortium/S7/issues/199. Easy to implement but is it worth it?
- What should we call the S7 equivalent of inherits? https://github.com/RConsortium/S7/issues/193 — call it
S7_inherits()
for now; will eventually just be part of inherits. Propose generic extension mechanism for inherits. - Explicit S4 registration: https://github.com/RConsortium/S7/pull/182
- New names for base types? https://github.com/RConsortium/S7/issues/170 —
class_
sounds good. - Convert and super: https://github.com/RConsortium/S7/pull/181
- Should we offer encapsulated OO? https://github.com/RConsortium/S7/issues/202