Example String defMethod 002

 

 

Description

This example calls the defMethod function where the method makePlural is implemented for the datatype Text. The method makePlural is invoked by the send function calling the message in the Text Methods Dictionary.

 

Details

Define a method named makePlural which which adds an "s" to a Text. Make sure that there is no whitespace between the keyword String: and the message name or else the compiler will flag an error.

(defmethod Text:makePlural(str) (append str "s")) Returns: #<Dictionary 12345>

Invoke the method named makePlural to convert a text to a plural.

(setq X #void)
(setq X "apple")
(setq Y (send makePlural: X))
Returns: apples

The method can be invoked simply by name:

(setq Y (makePlural: X)) Returns: apples

Notes and Hints

It is important to remember that String constants that are 7 characters or less are by default assigned a type of Text unless explicitly assigned to a String Symbol variable. All functions that are applicable to Strings (append, mid, right, etc.) are applicable Text constants as well. The fact that a constant is a Text or String is normally transparent to the user.

The Methods Dictionary exists for both the String type and the Text type. The constant "Hello" would, by default, be assigned as a Text constant if the following Lisp statement were used:

(setq SText "Hello")

The method makePlural: which was installed as a method for the String type by the defmethod function would not be able to the understand the following Lisp instruction:

(makePlural SText:)

Since the argument to the makePlural message, Stext, is a Text String, the Lisp compiler will go the Methods Dictionary for the Text data type. However there is no makePlural method for the data type Text. Recall that the makePlural method was installed in the String data type

 

Related Examples

Here are examples of the defMethod function at work.

Brick defmethod 025 Dictionary defMethod 006 Directory defMethod 007 Matrix defMethod 009
String defMethod 001 String defMethod 002 Symbol defMethod 003

 

Function Links

Here is the link to the current function used in this example.

defMethod

Here are a number of links to other related functions.

addMethod(#void) send(#void) methodsOf(#void)

 

Argument Types

Here are the links to the data types of the arguments used in this example.

String Text Dictionary

Here are a number of links to examples having similar argument types.

BitVector addMethod 023 BitVector defmethod 020 BitVector isType 020 BitVector methodsOf 021
BitVector ref 027 BitVector send 018 BitVector vectorFill 007 Boolean addMethod 011
Boolean addMethod 012 Boolean boolean 001 Boolean defmethod 012 Boolean isType 011
Boolean send 010 Boolean setq 016 Brick addMethod 008 Brick defmethod 025
Brick methodsOf 024 Brick send 027 ByteVector isCharAlphabetic 003 ByteVector isCharAlphanumeric 003
ByteVector isCharLowercase 003 ByteVector isCharName 003 ByteVector isCharNumeric 003 ByteVector isCharUppercase 003
ByteVector isCharWhitespace 003 Character addMethod 013 Character defmethod 013 Character isType 012
Character methodsOf 013 Character send 011 Character setq 017 Context debugBrowsableProcs 001
Context disassemble 001 CpxVector addMethod 028 CpxVector send 028 Date addMethod 015
Date addMethod 016 Date defmethod 015 Date hour 001 Date isType 014
Date julian 001 Date methodsOf 015 Date minute 001 Date month 001
Date second 001 Date send 013 Date setq 019 Date time 001
Date time 002 Date year 001 Dictionary addMethod 005 Dictionary binarySearch 002
Dictionary cdr 003 Dictionary compare 004 Dictionary compareEQ 004 Dictionary compareGE 004
Dictionary compareGT 004 Dictionary compareLE 004 Dictionary compareLT 004 Dictionary compareNE 004
Dictionary comparison functions 004 Dictionary copy 002 Dictionary count 002 Dictionary defMethod 006
Dictionary delete 003 Dictionary delete 004 Dictionary insert 002 Dictionary inside 002
Dictionary isAtom 002 Dictionary isBound 002 Dictionary isDictionary 001 Dictionary isEqual 002
Dictionary isIdentical 002 Dictionary isInside 002 Dictionary isMember 002 Dictionary isObject 004
Dictionary isType 006 Dictionary length 005 Dictionary makeDictionary 001 Dictionary map 002
Dictionary mapc 002 Dictionary member 002 Dictionary methodsOf 007 Dictionary new 004
Dictionary objectToDictionary 001 Dictionary objectToDictionary 002 Dictionary objectToDictionary 003 Dictionary objectToDictionary 004
Dictionary ref 007 Dictionary ref 008 Dictionary ref 009 Dictionary refAttributes 002
Dictionary refValues 002 Dictionary remove 002 Dictionary resize 002 Dictionary send 004
Dictionary setAttributes 002 Dictionary setCdr 001 Dictionary setCdr 002 Dictionary setq 007
Dictionary setq 008 Dictionary setq 009 Dictionary sizeof 004 Dictionary sort 003
Dictionary sort 004 Dictionary sort 005 Dictionary type 007 Directory addMethod 006
Directory defMethod 007 Directory isDirectory 001 Directory isType 007 Directory new 005
Directory new 006 Directory ref 010 Directory ref 012 Directory refAttributes 003
Directory refValues 003 Directory send 005 Directory setq 011 Error error 001
Error errorTrap 001 Error isError 001 Error onError 001 FileIO closeLog 001
FltVector addMethod 019 FltVector defmethod 017 FltVector isType 016 FltVector methodsOf 017
FltVector ref 022 FltVector send 015 FltVector vectorFill 003 Function addMethod 017
Function addMethod 018 Function defmethod 016 Function isType 015 Function methodsOf 016
Function send 014 IntVector addMethod 020 IntVector defmethod 018 IntVector isType 017
IntVector methodsOf 018 IntVector ref 023 IntVector send 016 IntVector vectorFill 004
Lambda balance 001 Lambda compareLE 008 Lambda debugBrowsableProcs 001 Lambda defchild 001
Lambda define 001 Lambda deforphan 001 Lambda defriend 001 Lambda defun 001
Lambda defun 002 Lambda disassemble 001 Lambda ref 017 Lambda send 008
Lambda send 009 Lambda setq 015 List addMethod 025 List defmethod 022
List methodsOf 022 List send 020 Matrix addMethod 008 Matrix defMethod 009
Matrix isType 009 Matrix ref 015 Matrix ref 016 Matrix send 008
Matrix setq 014 Matrix vectorFill 002 NumMatrix addMethod 027 NumMatrix defmethod 024
NumMatrix isType 022 NumMatrix ref 035 NumMatrix send 027 NumMatrix vectorFill 008
NumVector addMethod 021 NumVector defmethod 019 NumVector isType 018 NumVector methodsOf 019
NumVector ref 024 NumVector send 017 NumVector vectorFill 005 Number addMethod 014
Number defmethod 014 Number isType 013 Number methodsOf 014 Number send 012
Number setq 018 ObjVector addMethod 022 ObjVector isType 019 ObjVector ref 025
ObjVector vectorFill 006 ObjectRepository addMethod 026 ObjectRepository defmethod 023 ObjectRepository methodsOf 023
ObjectRepository send 026 Pair addMethod 024 Pair defmethod 021 Pair methodsOf 021
Pair send 019 PcodeVector methodsOf 020 PcodeVector ref 026 ShortVector addMethod 021
ShortVector defmethod 019 ShortVector isType 018 ShortVector methodsOf 019 ShortVector ref 024
ShortVector send 017 ShortVector vectorFill 005 String addMethod 001 String append 001
String append 002 String clean 001 String code 001 String compare 001
String compareEQ 001 String compareGE 001 String compareGT 001 String compareLE 001
String compareLT 001 String compareNE 001 String comparison functions 001 String defMethod 001
String defMethod 002 String downcase 001 String fileRead 001 String fileRead 002
String fileReadRecord 001 String fileWrite 001 String find 001 String find 002
String hashString 001 String isChar 001 String isCharAlphabetic 001 String isCharAlphanumeric 001
String isCharLowercase 001 String isCharName 001 String isCharNumeric 001 String isCharUppercase 001
String isCharWhitespace 001 String isEqual 001 String isEqual 002 String isObject 001
String isString 001 String isText 001 String isType 001 String isType 002
String isType 003 String left 001 String length 001 String length 002
String methodsOf 001 String methodsOf 002 String methodsOf 003 String mid 001
String new 001 String parse 001 String ref 001 String ref 002
String replace 001 String rept 001 String right 001 String send 001
String sizeof 001 String string 001 String string 002 String string 003
String stringCiEQ 001 String stringCiGE 001 String stringCiGT 001 String stringCiLE 001
String stringCiLT 001 String stringCiNE 001 String stringFill 001 String stringToBVector 001
String stringToBVector 002 String stringToBVector 003 String stringToVector 001 String stringToVector 002
String stringToVector 003 String stringToVector 004 String substitute 001 String substitute 002
String substring 001 String substring 002 String substringCiEQ 001 String substringCiGE 001
String substringCiGT 001 String substringCiLE 001 String substringCiLT 001 String substringCiNE 001
String text 001 String trim 001 String type 001 String upcase 001
String upcase 002 String upcase 003 Structure addMethod 003 Structure addMethod 004
Structure apply 002 Structure defmethod 004 Structure defmethod 005 Structure defstruct 001
Structure methodsOf 005 Structure ref 004 Structure ref 006 Structure refAttributes 001
Structure refValues 001 Structure send 003 Structure setq 003 Structure setq 004
Structure setq 005 Structure setq 006 Symbol *< 001 Symbol +< 001
Symbol -< 001 Symbol /< 001 Symbol addMethod 002 Symbol defMethod 003
Symbol isCharAlphabetic 002 Symbol isCharAlphanumeric 002 Symbol isCharLowercase 002 Symbol isCharName 002
Symbol isCharNumeric 002 Symbol isCharUppercase 002 Symbol isCharWhitespace 002 Symbol isObject 002
Symbol isSymbol 001 Symbol isType 004 Symbol length 003 Symbol makeQuotedSymbol 001
Symbol methodsOf 004 Symbol send 002 Symbol sizeof 002 Symbol symbol 001
Symbol symbol 002 Symbol type 002 Vector addMethod 007 Vector defmethod 008
Vector isType 008 Vector ref 013 Vector ref 014 Vector refAttributes 004
Vector refValues 004 Vector send 006 Vector setq 012 Vector setq 013
Vector vectorFill 001 Void addMethod 009 Void addMethod 010 Void defmethod 010
Void defmethod 011 Void isType 010 Void ref 017 Void send 009
Void setq 015 substringEQ 001 substringFill 001 substringGE 001
substringGT 001 substringLE 001 substringLT 001 substringNE 001

Analytic Information Server (AIS)

AIS Component Systems

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