isBeingCreated.Class {R.oo}R Documentation

Checks if a class is currently being initiated initiated

Description

Checks if a class is currently being initiated initiated. When extending a class for the first time, which is typically done in a constructor, a static instance of the class is created by calling the constructor without parameters. This method provides a way to detect that second call inside the constructor.

Usage

## S3 method for class 'Class':
isBeingCreated(this, ...)

Arguments

... Not used.

Value

Returns TRUE if a static instance exists, otherwise FALSE.

Author(s)

Henrik Bengtsson (http://www.braju.com/R/)

See Also

For more information see Class.

Examples

setConstructorS3("Car", function(brand=NULL, nbrOfWheels=0) {
  if(!isBeingCreated(Car)) {
    if (is.null(brand))
      throw("A car must have a brand")
     
    if (nbrOfWheels <= 0)
      throw("A car must have one or more wheels: ", nbrOfWheels)
  }

  extend(Object(), "Car",
    .brand = brand,
    .nbrOfWheels = nbrOfWheels
  )
})

setMethodS3("as.character", "Car", function(this, ...) {
  cat(class(this)[1], ":", this$.brand, " with ",
                     this$.nbrOfWheels, " wheels.", sep="");
})

print(Car("Volvo", 4))
print(Car("BMW", 4))
print(Car("Tyrrell P34", 6))
print(Car("T-Rex", 3))

[Package R.oo version 1.6.5 Index]