Exploring and getting help
In the previous section, I mentioned the Application Programming Interface (API) which you should definitely consult in parallel with this book when creating your own worlds. However, there are other ways available for you to get help.
Even if you use only one of either Python or JavaScript in your teaching, both have complementary tools which might be useful.
[info] Images may look different from what you see
In the examples below, I have adjusted the size of the windows prior to taking screenshots.
Using Python
From either the editor or the Python REPL, you can also get some help:
- To list all available Python functions, classes, etc., simply enter
help()
. - To get help about a particular function, for example
move
, enterhelp(move)
To get a complete, up-to-date version of every Python function available in the English version, enter
import reeborg_en help(reeborg_en)
You can use
reeborg_fr
to get the corresponding French version. [Suggestion: if you teach using a language other than English or French, and create a version ofreeborg_XX
in your own language, I will gladly add it to the site. ;-)] Note that this help system is specific to Python and does not include the available functions prefixed byRUR
and documented in the the Application Programming Interface (API). With a few exceptions, if a function exists in Python (e.g.move()
), there is one with the same name also available when using Javascript.
If you are familiar with Python, you likely already know about dir()
. This Python built-in function is great in finding out the various attribute of an object. For example, executing
r = UsedRobot()
print(dir(r))
lists the attributes (methods and variables) belonging to this object. If you do this, you might notice the body
attribute, perhaps inviting you to see what attributes it has, if any.
r = UsedRobot()
print(dir(r.body))
If you run these two examples from the REPL, the output will be printed in a reasonably acceptable format. However, if you do it from the Python code editor, the output may require you to do a lot of scrolling to find out what information is available.
For your convenience, I have included a new function, print_dir()
which prints the result in a more user friendly way.
However, please note that, for the first of these two specific examples, it would have been much better to do the following:
r = UsedRobot()
help(r)
Using JavaScript
In a previous version of Reeborg's World, I had included a function, dir_js
which could be used somewhat like Python's dir()
. There was also a function named inspect()
and another named view_js_source()
which were useful for exploring the code in different ways. In this new version of Reeborg's World, I have simplified the approach, eliminating the old functions and introducing a new one currently named help_js()
.
[success] Feedback wanted
Can you think of a better name to use instead of
help_js
?
Here are the JavaScript equivalents to the two Python examples I mentioned above:
r = new UsedRobot();
help_js(r)
r = new UsedRobot();
help_js(r.body);
As you can see, the output is both better looking and more informative than the corresponding one from Python.
If I instead use it for a function/method,
r = new UsedRobot();
help_js(r.move);
I get the actual code of that function:
which I can then explore further,
help_js(RUR._UR.move_);
// after looking at the output, I then try
help_js(RUR.control.move);
[success] Tip
Instead of going to Github and browsing the code repository to find out the implementation details, it might be more effective to use
help_js()
as shown above.
About RUR
Previously, I mentioned that there are a lot more functions belonging to the RUR namespace than what I have documented in the Application Programming Interface (API). You can actually see all the names belonging to that namespace by doing help_js(RUR)
. However, only those documented in the API are (reasonably) guaranteed not to change.