Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > Method prototypes like C++? // Compiling executables

Reply
Thread Tools

Method prototypes like C++? // Compiling executables

 
 
Claudio Freda
Guest
Posts: n/a
 
      02-18-2010
Hi, I'm switching from C++ to Ruby, I have a few questions.

1. How come there isn't any "method prototype" feature like the function
prototypes in C++? Like, in c++ I declared just the name of a funcion at
the beginning of a block of code and then I could put the function
anywhere in the program, so it could be called wherever, without
worrying if it had been fully declared or not. Is this possible?

2. I find it awesome that you needn't compile to view the results of
your code; still, i would like to be able to compile my programs to an
executable file for distribution. Is it possible?

3. I still don't get how this whole "gems" thing work. In C++ I used to
load libraries, it seems that in Ruby most of the libraries are loaded
by themselves when needed. When exactly do I need to include other
libraries?
--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
 
 
 
Rob Biedenharn
Guest
Posts: n/a
 
      02-18-2010
On Feb 18, 2010, at 8:50 AM, Claudio Freda wrote:

> Hi, I'm switching from C++ to Ruby, I have a few questions.
>
> 1. How come there isn't any "method prototype" feature like the
> function
> prototypes in C++? Like, in c++ I declared just the name of a
> funcion at
> the beginning of a block of code and then I could put the function
> anywhere in the program, so it could be called wherever, without
> worrying if it had been fully declared or not. Is this possible?


Sure just do it! Methods only need to exist when then are "called"
and even then you can use the method_missing hook to define them on
the fly if you need to.

>
> 2. I find it awesome that you needn't compile to view the results of
> your code; still, i would like to be able to compile my programs to an
> executable file for distribution. Is it possible?


Look at JRuby's ability to create .class files for the JVM, but you
might want to keep an open mind about whether you *really* need to
compile.

>
> 3. I still don't get how this whole "gems" thing work. In C++ I used
> to
> load libraries, it seems that in Ruby most of the libraries are loaded
> by themselves when needed. When exactly do I need to include other
> libraries?


It's a way to have multiple versions of libraries on your system.
You'll know you need more because something doesn't exist. For
example, there are some useful methods on Date that are only available
if you "require 'date'" in your code. (Not the best example because
that's not a gem, but a standard library, i.e., it comes as part of
Ruby.)

-Rob

Rob Biedenharn http://agileconsultingllc.com
http://www.velocityreviews.com/forums/(E-Mail Removed)




 
Reply With Quote
 
 
 
 
sandeep bupathi
Guest
Posts: n/a
 
      02-18-2010
[Note: parts of this message were removed to make it a legal post.]

how to unsubscribe from this mailing list can any one please reply me.

thanks
sandeep

 
Reply With Quote
 
Claudio Freda
Guest
Posts: n/a
 
      02-18-2010
Rob Biedenharn wrote:
> Sure just do it! Methods only need to exist when then are "called"
> and even then you can use the method_missing hook to define them on
> the fly if you need to.


Wait, I explain my problem.
In C++ I would have been able to to this:

void function();
function();
void function() {
cout<<"The function has been executed"
}

And it would still print "The function has been executed"

In ruby instead if I do this:

def method; end

method

def method
print ('The method has been executed')
end

it just prints me nothing; I think it has something to do with ruby's
dynamic definitions.

Just how to achieve the same thing in ruby? (summoning a function that
is declared later in the code)
--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
Jesús Gabriel y Galán
Guest
Posts: n/a
 
      02-18-2010
On Thu, Feb 18, 2010 at 6:28 PM, Claudio Freda <(E-Mail Removed)> wrot=
e:
> Rob Biedenharn wrote:
>> Sure just do it! =A0Methods only need to exist when then are "called"
>> and even then you can use the method_missing hook to define them on
>> the fly if you need to.

>
> Wait, I explain my problem.
> In C++ I would have been able to to this:
>
> void function();
> function();
> void function() {
> =A0cout<<"The function has been executed"
> }
>
> And it would still print "The function has been executed"
>
> In ruby instead if I do this:
>
> def method; end
>
> method
>
> def method
> =A0print ('The method has been executed')
> end
>
> it just prints me nothing; I think it has something to do with ruby's
> dynamic definitions.
>
> Just how to achieve the same thing in ruby? (summoning a function that
> is declared later in the code)


What Rob wanted to say is that you don't need to declare a function
(method). You just call it, and it has to have been defined before the
call. But be aware that the code inside a method is not executed when
it's parsed, only when the method is called, so you can have this:

irb(main):001:0> def caller
irb(main):002:1> method("a")
irb(main):003:1> end
=3D> nil
irb(main):004:0> def method(s)
irb(main):005:1> puts s
irb(main):006:1> end
=3D> nil
irb(main):007:0> caller
a

You can have the definition of caller before the definition of method.
What you can't do is call caller before defining method.

Hope this clears up a bit,

Jesus.

 
Reply With Quote
 
Robert Klemme
Guest
Posts: n/a
 
      02-19-2010
2010/2/18 Claudio Freda <(E-Mail Removed)>:
> Rob Biedenharn wrote:
>> Sure just do it! =A0Methods only need to exist when then are "called"
>> and even then you can use the method_missing hook to define them on
>> the fly if you need to.

>
> Wait, I explain my problem.
> In C++ I would have been able to to this:
>
> void function();
> function();
> void function() {
> =A0cout<<"The function has been executed"
> }
>
> And it would still print "The function has been executed"


You need that in C / C++ only because implementations are split to
header and source files. We don't do that in Ruby. Instead, we
implement whatever functionality we need and place it in one or more
rb files. Those are then read by using "require".

> In ruby instead if I do this:
>
> def method; end
>
> method
>
> def method
> =A0print ('The method has been executed')
> end
>
> it just prints me nothing; I think it has something to do with ruby's
> dynamic definitions.
>
> Just how to achieve the same thing in ruby? (summoning a function that
> is declared later in the code)


That's not a problem as long as execution starts later:

def foo
method
end

def method
puts 'It works!'
end

foo

This is typically the case if your required files contain declarations only=
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Cross-compiling error when compiling 2.6.1... Garrett Cooper Python 0 02-24-2009 08:55 PM
object-like macro used like function-like macro Patrick Kowalzick C++ 5 03-14-2006 03:30 PM
Ruby/DL struct! method prototypes gregarican Ruby 1 10-13-2005 08:25 PM
Compiling GCJ executables with icons? Steve Java 0 07-01-2005 04:38 PM
Some complex function prototypes like signal() lovecreatesbeauty C Programming 2 01-28-2005 07:53 PM



Advertisments