strict_list {xfun} | R Documentation |
Strict lists
Description
A strict list is essentially a normal list()
but it does not
allow partial matching with $
.
Usage
strict_list(...)
as_strict_list(x)
## S3 method for class 'xfun_strict_list'
x$name
## S3 method for class 'xfun_strict_list'
print(x, ...)
Arguments
... |
Objects (list elements), possibly named. Ignored in the
|
x |
For For |
name |
The name (a character string) of the list element. |
Details
To me, partial matching is often more annoying and surprising than
convenient. It can lead to bugs that are very hard to discover, and I have
been bitten by it many times. When I write x$name
, I always mean
precisely name
. You should use a modern code editor to autocomplete
the name
if it is too long to type, instead of using partial names.
Value
Both strict_list()
and as_strict_list()
return a list
with the class xfun_strict_list
. Whereas as_strict_list()
attempts to coerce its argument x
to a list if necessary,
strict_list()
just wraps its argument ...
in a list, i.e., it
will add another list level regardless if ...
already is of type
list.
Examples
library(xfun)
(z = strict_list(aaa = "I am aaa", b = 1:5))
z$a # NULL!
z$aaa # I am aaa
z$b
z$c = "create a new element"
z2 = unclass(z) # a normal list
z2$a # partial matching
z3 = as_strict_list(z2) # a strict list again
z3$a # NULL again!