Requires a value to satisfy every member of ..., unlike
property_union() which requires at least one. Every member must share
the same underlying class since a single value can't be an instance of
two different classes at once.
Arguments
- ...
S7 classes or properties to intersect.
- default
Any. Passed to
S7::new_property().- e1, e2
S7 classes or properties to intersect.
Examples
library(S7)
PieceColor <- property_intersection(
property_scalar(S7::class_character),
S7::new_property(
S7::class_character,
validator = function(value) {
if (!(value %in% c("White", "Black"))) "must be White or Black"
}
)
)
Piece := new_class(properties = list(color = PieceColor))
Piece("White")
#> <Piece>
#> @ color: chr "White"
library(S7)
Piece := new_class(
properties = list(
id = property_scalar(S7::class_character) & S7::new_property(S7::class_character)
)
)
Piece("a")
#> <Piece>
#> @ id: chr "a"