send

 

 

Overview

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

Here we define a class Lambda, create an object of the class, and then use the send special form 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

;; Using send to invoke a method of an object created by a class Lambda
(setq emp (new employee "John Doe" 24000.0)) ;; Create an object of class employee
(send talk:emp) ;; writes on console, "I John Doe am an employee."

;; Using a short cut to send
(talk:emp) ;; writes on console, "I John Doe am an employee."

;; Using a ref instead of send
(emp.talk emp) ;; writes on console, "I John Doe am an employee."

;; Invoking the class method directly instead of send
(employee.talk emp) ;; writes on console, "I John Doe am an employee."

Usage

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

 

Syntax


Expression:

(send methodName object)

(send methodName object arg1 arg2...)

(methodName object)

(methodName object arg1 arg2 ...)


Arguments Name Type Description
Argument:methodNameSymbol The name of the 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 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