Description Usage Arguments Details See Also Examples
This functions can be used to construct a list with class attribute and
merged with another list called super. The constructed list will contain (by
default) all visible objects from the environment from which retList
is called.
| 1 2 3 4 5 6 7 8 | 
| class | character giving the class name. | 
| public | character with the names to include. | 
| super | a list/object to be extended. | 
| superEnv | environment where new methods will live in. | 
| mergeFun | function with two arguments. Knows how to join/merge
environments -  | 
| envir | this is the environment you want to convert into the list. Default is the environment from which the function is called. | 
| x | a list | 
funNames returns the names of functions in the environment
from which it is called.
asEnv trys to find an environment for x. If x is NULL or an
empty list, the function returns NULL. (Else) If x has an attribute
called .self it is this attribute which is returned. (Else) If x is
a list it is converted to an environment.
ls, +.Infix, print.Print
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | # To get a quick overview of the package:
vignette("Introduction", "aoos")
# To get more infos about retList:
vignette("retListClasses", "aoos")
# To get some infos about performance:
vignette("performance", "aoos")
# A simple class with one method:
Test <- function(.x) {
  getX <- function() .x
  retList("Test")
}
stopifnot(Test(2)$getX() == 2)
# A second example inheriting from Test
Test2 <- function(.y) {
  getX2 <- function() .x * 2
  retList("Test2", super = Test(.y))
}
stopifnot(Test2(2)$getX() == 2)
stopifnot(Test2(2)$getX2() == 4)
### Rational numbers example with infix operators and print method
Rational <- function(numer, denom) {
  gcd <- function(a, b) if(b == 0) a else Recall(b, a %% b)
  g <- gcd(numer, denom)
  numer <- numer / g
  denom <- denom / g
  print <- function(x, ...) cat(paste0(numer, "/", denom, "\n"))
  ".+" <- function(that) {
    Rational(numer = numer * that$denom + that$numer * denom,
             denom = denom * that$denom)
  }
  ".-" <- function(that) {
    if (missing(that)) {
      Rational(-numer, denom)
    } else {
      .self + (-that)
    }
  }
  # Return only what should be visible from this scope:
  retList(c("Rational", "Infix", "Print"),
          c("numer", "denom", "neg", "print"))
}
rational <- Rational(2, 3)
rational + rational
rational - rational
 | 
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.