Alle sabato 3 marzo 2007, Alan L. ha scritto:
When I try to refer to them (in irb), but after saying
require ‘tk’
I have tried as many different ways as I can…
puts tk::TK_VERSION
puts TK_VERSION
puts TK::TK_VERSION
I know nothing of tk, but the constants you looked for are in module Tk,
not
TK and not tk (which can’t be a module name since it doesn’t begin with
an
uppercase character). So, you should do:
require ‘tk’
puts Tk::TK_VERSION
…
Looking at the names of the variables you mentioned (keeping in mind
that I
don’t know tk), I think there’s a good reason for which they’re
constants:
for instance, TK_VERSION is the version of tk you have on your system,
so I
can’t think of a reason to change them.
By the way, to get the names of the constants (including classes and
modules)
defined in a class or module, you can use the constants method of the
Module
class. If you call it as a class method of the module class (i.e
Module.constants), it will return an array with the top-level constants.
If
you call it as an instance method of a class / module it will return the
names of the constants defined in it. In your case:
require ‘tk’
Module.constants.sort
=> [“ARGF”, “ARGV”, “ArgumentError”, “Array”, …, “Tk”, “TkAfter”, …]
This tells you the module you needed is called Tk. To know the constants
defined in the Tk module, you can do:
Tk.constants.sort
=> [“AUTO_PATH”, “BinaryString”, …, “TK_PATCHLEVEL”, “TK_VERSION”,
…]
I hope this helps
Stefano