| extend {R.oo} | R Documentation |
Extends a object
Description
via a mechanism known as "parasitic inheritance".
Simply speaking this method "extends" the class of an object. What is actually
happening is that it creates an instance of class name ...className,
by taking another object and add ...className to the class
list and also add all the named values in ... as attributes.
The method should be used by the constructor of a class and nowhere else.
Usage
## Default S3 method:
extend(this, ...className, ...)
Arguments
this |
Object to be extended. |
...className |
The name of new class. |
... |
Attribute fields of the new class. |
Value
Returns an object of class ...className.
Author(s)
Henrik Bengtsson
Examples
setConstructorS3("MyDouble", function(value=0, ...) {
extend(as.double(value), "MyDouble", ...)
})
setMethodS3("as.character", "MyDouble", function(object, ...) {
fmtstr <- attr(object, "fmtstr")
if (is.null(fmtstr))
fmtstr <- "%.6f"
sprintf(fmtstr, object)
})
setMethodS3("print", "MyDouble", function(object, ...) {
print(as.character(object), ...)
})
x <- MyDouble(3.1415926)
print(x)
x <- MyDouble(3.1415926, fmtstr="%3.2f")
print(x)
attr(x, "fmtstr") <- "%e"
print(x)
setConstructorS3("MyList", function(value=0, ...) {
extend(list(value=value, ...), "MyList")
})
setMethodS3("as.character", "MyList", function(object, ...) {
fmtstr <- object$fmtstr
if (is.null(fmtstr))
fmtstr <- "%.6f"
sprintf(fmtstr, object$value)
})
setMethodS3("print", "MyList", function(object, ...) {
print(as.character(object), ...)
})
x <- MyList(3.1415926)
print(x)
x <- MyList(3.1415926, fmtstr="%3.2f")
print(x)
x$fmtstr <- "%e"
print(x)
[Package R.oo version 1.26.0 Index]