super

 

 

Overview

The super special form invokes a parent method of an object. The parent methods invocation may include 0 or more arguments.

Here we define a class Lambda, create an object of the class, and then use the super function to invoke a method of the newly created object.

(defclass employee()
   svars:(String:Name (Number:Salary 0.0))
   cvars:(empStatic)
   (defun new(self name salary)
      (setq Name (string name))
      (setq Salary salary)
      self) ;; end of new method
   (defun talk(self)
      (writeln "I " Name " am an employee.")
      true) ;; end of talk method

   ;;.... other class methods here

   true) ;; end of employee class

(defclass employee:manager()
   svars:(String:Title)
   (defun talk(self)
      (writeln "I " Name " am a manager.")
      true) ;; end of talk method

   ;;.... other class methods here

   true) ;; end of manager class

;; Using super to invoke a parent method of an object created by a class Lambda
(setq mgr (new manager "Chuck Bigman" 36000.0)) ;; Create an object of class manager
(super talk:mgr) ;; writes on console, "I Chuck Bigman am an employee."

;; Using a short cut to super
(talk:(getGlobalValue (parent mgr)) mgr) ;; writes on console, "I Chuck Bigman am an employee."

;; Using a ref instead of super
((getGlobalValue (parent mgr))[talk:] mgr) ;; writes on console, "I Chuck Bigman am an employee."

Usage

The super special form can only be used to invoke a parent method of a class Structure or a class Lambda. The super Special Form causes a lookup of the method name argument in the parent class methods Structure. If the method name is found, the Lambda bound to the method name will be invoked.

 

Syntax


Expression:

(super methodName object)

(super methodName object arg1 arg2...)

(methodName object)

(methodName object arg1 arg2 ...)


Arguments Name Type Description
Argument:methodNameSymbol The name of the parent method to be invoked
Argument:objectStructure or Lambda The target object of the message.
Argument:args...all types (Optional) The argument list.

Returns:

Dependents upon the parent method invoked.



 

Examples

Here are a number of links to Lambda coding examples which contain this instruction in various use cases.

 

Argument Types

Here are the links to the data types of the function arguments.

Structure or Lambda

Here are also a number of links to functions having arguments with any of these data types.

addMethod append apply argCount
argFetch attachLibrarian balance binaryInsert
boolean callcc cdr class
compareEQ compareGE compareGT compareLE
compareLT compareNE compare comparison
compile cons copy count
debugBrowsableProcs debugDetective debug defchild
defclass define(macro) defineStructure define
defmacro defmethod deforphan defriend
defstruct defun delete detachLibrarian
dimension disassemble display evalInSyncLocalContext
eval exportCsv exportSbf exportTab
fieldsOf globalBinding importCsv importSbf
importTab insert inside inspect
integer isAtom isBitVector isBoolean
isBound isByteVector isChar isCharacter
isClass isComplex isDate isDictionary
isDirectory isEqual isError isFloatVector
isIdentical isInside isIntegerVector isInteger
isLambda isMatrix isMember isMoney
isNumberMatrix isNumberVector isNumber isObjectVector
isObject isPair isPcodeVector isString
isStructure isSymbol isText isType
isVector lambda length lisp
list macroReplace makeLambda makeQuotedList
makeStructure map mapc member
money myself new number
objectToList objectToMatrix objectToNumMatrix objectToNumVector
objectToStructure objectToVector offset onError
pair parent parse pointer
proprecord putprop refAttributes refLibrarian
refValues ref remProp remove
resize saveObject send setCar
setCdr setLastCdr setq sizeof
sort string super svmRegression
type uniqueInsert vectorFill writelg
writeln

Analytic Information Server (AIS)

AIS Component Systems

  • Smartbase Engine
  • QT C++ Libraries
  • MySQL Relational Database
  • AIS Lisp Libraries
  • Rapid Analytic Demo IDE