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.