From: Claudio Freda on 18 Feb 2010 08:50 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/.
From: Rob Biedenharn on 18 Feb 2010 09:18 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 Rob(a)AgileConsultingLLC.com
From: sandeep bupathi on 18 Feb 2010 09:20 [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
From: Claudio Freda on 18 Feb 2010 12:28 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/.
From: Jesús Gabriel y Galán on 18 Feb 2010 12:41 On Thu, Feb 18, 2010 at 6:28 PM, Claudio Freda <ferdil.kiwi(a)gmail.com> wrote: > 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) 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 => nil irb(main):004:0> def method(s) irb(main):005:1> puts s irb(main):006:1> end => 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.
|
Next
|
Last
Pages: 1 2 Prev: [ANN] Money 2.2.0 Next: ruby-prof on windows: strange measured time numbers |