[MacRuby-devel] Bizarre behaviour with an instance variable

Eloy Durán eloy.de.enige at gmail.com
Thu Jan 27 01:44:39 PST 2011


The problem you are seeing is because inside the #map block you don't reference the project root variable as an instance variable, but as a local variable. Hence the error “undefined local variable or method `theProjectRoot'” :)

If you change the block like this, all should be good:

    map {|f| @theProjectRoot.stringByAppendingPathComponent(f) }

On Jan 27, 2011, at 10:18 AM, Martin Hawkins wrote:

> I find the following behaviour a little bizarre:
> At the macirb prompt (0.8)
> fileManager = NSFileManager.defaultManager
> @theProjectRoot = '/Users/martin/work/macruby/lots_of_files'
> => "/Users/martin/work/macruby/lots_of_files"
>>> filenames = fileManager.contentsOfDirectoryAtPath(@theProjectRoot, error:nil).map {|f| theProjectRoot.stringByAppendingPathComponent(f) }
> NameError: undefined local variable or method `theProjectRoot' for
> main:TopLevel
> 
> If I create a local variable with the name theProjectRoot, then the
> statement runs correctly. According to the documentation,
> NSFileManager.defaultManager.contentsOfDirectoryAtPath requires a
> string; the scope of the variable should be irrelevant, shouldn't it?
> 
> _______________________________________________
> MacRuby-devel mailing list
> MacRuby-devel at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel



More information about the MacRuby-devel mailing list