Mike
3/12/2007 12:49:00 AM
On Mar 12, 1:52 am, Daniel Berger <djber...@gmail.com> wrote:
> Michael Strelnikov wrote:
> > Hello all,
>
> > Does Ruby have something like "#define" for C/C++? Especially with
> > arguments like "#define foo(x) (something_done_with_x(x))".
>
> > Please don't say that "def" do the same. It doesn't.
>
> The closest analogue is to conditionally define a constant, then used
> defined? on that constant.
>
> For example, I do something like this in the windows-pr project, where
> some methods are not supported by Win2k or earlier:
>
> module Windows
> module Console
> begin
> AttachConsole = Win32API.new('kernel32','AttachConsole','L', 'I')
> rescue LoadError
> # Requires Windows XP or later
> end
> end
> end
>
> And then, while using the above module:
>
> class MyConsoleClass
> include Windows::Console
>
> def test
> if defined? AttachConsole
> # do something
> else
> # do something else
> end
> end
> end
>
> Regards,
>
> Dan
I was talking more about macros rather then constants.
But I agree that constant are convenient way to substitute "#define
myconst 15". But can you substitute "#define myfunc(x)
(sin(x)*cos(x)*exp(x))"?
You should know that "x" could be as much other functions as a
constant/variable.