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.
