Using Generic Jade Dictionary Methods
Jade enables you to write generic dictionary methods that receive and pass on KeyType parameters in dictionary classes when no keys are defined. For example, Jade implements the
includesKey(keys: KeyType): Boolean; begin return getAtKey(keys) <> null; end;
When a Jade method with a KeyType formal parameter is compiled in a dictionary class in which no keys are defined, a variable key list is assumed.
The following is an example of a method that could be defined at the
getAtKeyGeqOrLast(keys: KeyType): MemberType; vars entry : MemberType; begin entry := getAtKeyGeq(keys); if entry = null then // If not found, return the last entry in the dictionary entry := last; endif; return entry; end;
Although this getAtKeyGeqOrLast method is a generic method defined in an abstract dictionary class that has no defined keys, it could be called using a reference to a dictionary type with defined keys. This enables the compiler to perform full type-checking on the keys.
In the following example, the CustomerByNameDict dictionary has a single string key. The actual parameter in the call in this example can be fully type-checked by the compiler.
vars customerDict : CustomerByNameDict; cust : Customer; begin ... cust := customerDict.getAtKeyGeqOrLast("Wallace"); ... end;
See also "Defining and Using External Dictionary Methods" and "Variable Parameter List Considerations", earlier in this chapter.