From: Phlip Date: 2008-12-31T06:09:30+09:00 Subject: Re: Ruby Noobie needs some help r wrote: > Hello, > I am coming from the python world and trying to learn ruby. Why does > this throw an error? > > #testscript.rb > cams = ['cam1', 'cam2', 'cam3'] > def function(s) > puts s > for x in cams > print x > end > end > test() Where is function 'test()'? (Note that my e-mails use 'single ticks' for code samples - don't type the ticks!) Next, I think that 'function()' cannot see 'cams' because it's in the wrong scope. If you want it to be constant, capitalize it, 'Cams', so it gets a wider scope, and the called function can see it. > In python this is perfectly valid, must i write a class for > everything? I direct your attention to the myriad Ruby tutorials, which exclaim proudly that - unlike Java - you don't need to write any class if you don't want one. (Ruby is still fully OO - the trick is you are inside a default class - I think it's 'Kernel'.) > Also how does ruby handle modules compared to python? In > python i can do "import testscript" and access the function and array > as... > py> testscript.function('hello') > py> testscript.cams[0] You 'require "testscript"', and your 'function()' is available without decoration. If you want it, you put 'module Testscript' > I can also do "from testscript import cams, function" and then do > py> cams[0] > py> function('hello') Then you would 'include Testscript' somewhere in the including module. From here, please crack a book. You will find Ruby infinitely superior to programmer-hostile systems like Java or Perl, and you will find it competes, feature-by-feature, with irritating systems like Python... > Does anybody know of a good Python2Ruby.tut() ?? Did Google help? I know there's a Java-to-Ruby tutorial out there... -- Phlip