More about Methods

A method name can be any character string. When an object receives a message, Rexx searches for a method whose name matches the message name independent of its case.

You must surround a method name with quotation marks when it is the same as an operator. The following example illustrates how to do this correctly. It creates a new class (Cost), defines a new method (&percent;), creates an instance of the Cost class ( mycost), and sends a &percent; message to mycost:

say "Enter a price:"
pull p
mycost=.Cost~new(p) /* Create a Cost instance */
say "price:" mycost~price /* ask current price */
mycost~"&percent;" /* send &percent; (increase) message */
say "price:" mycost~price /* ask current price */
say "&percent; :" mycost~"&percent;" /* send &percent; (increase) message */
::class Cost /* Cost class */
::attribute price /* allow access from others */
::method init
expose price increase /* establish direct access to these attributes */
use arg price /* save argument with attribute */
increase=25 /* increase in percent */
::method "&percent;" /* Increase price &percent; method */
expose price increase /* Produces: Enter a price. */
price=price*(100+increase)/100 /* increase */
return price /* return increased price */
Results (example
Enter a price:
price: 100
price: 125
&percent; : 156.25