Usage
## S3 method for class 'default}(this, ...className, ...)':
extendundefined
- this{Object to be extended.}
- ...className{The name of new class.}
- ...{Attribute fields of the new class.}
Returns an object of class
...className.
[object Object]
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)
programming
methods