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_missingsentinels.-
When creating an object, unspecified properties are initialized with their default value (#67). To achieve this, the constructor arguments default to
class_missing, sinceNULLwould prevent a default value ofNULL, andmissing()requires too many gymnastics.new_class("foo", properties = list(x = integer, y = double))@constructorhttps://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