|
|
|
More Advanced ExamplesHere are two more examples of method definitions: int getDex() { int oldDex = Dex; Dex = 0; return oldDex; } private void show_user(int|string id, void|string full_name) { write("Id: " + id + "\n"); if(full_name) write("Full name: " + full_name + "\n"); } The method getDex returns the value of a non-local variable called Dex, but also changes the value of that variable to zero (0). The method show_user expects to receive either one or two arguments. The first argument can be either an integer or a string. The second argument is optional, but if it is present it must be a string. Here are some valid statements that contain calls to the two methods above: getDex(); show_user(19); show_user("john"); show_user(19, "John Doe"); show_user("john", "John Doe"); Side-effects in MethodsWhen working with methods, you may want to be careful with side-effects. A side-effect is anything that the method causes to change or happen, except for the returned value. Sometimes the side-effects are the reason for the method, and sometimes they are a dangerous misfeature. In the three examples above, getDex has the side-effect of setting the value of the non-local variable Dex to 0, and show_user has the side-effect that it writes some text to the standard output. We can guess that show_user has been created just to write that text, so this side-effect of show_user is probably not a problem. On the other hand, if a programmer uses getDex to get the value of the variable Dex, it could come as a surprise that this method also changes the value. |
|||||||||