[#406419] Recursion with Hash — Love U Ruby <lists@...>

h = {a: {b: {c: 23}}}

14 messages 2013/04/01

[#406465] Exclusively for Rubyists, a community on Facebook — "senthil k." <lists@...>

I was surprised to know that there is no community for Ruby Programming

12 messages 2013/04/03
[#406467] Re: Exclusively for Rubyists, a community on Facebook — Marc Heiler <lists@...> 2013/04/04

Thing is, some people do not use Facebook and never will.

[#406528] Role of bundler in creating and installing a gem — Jon Cairns <lists@...>

Hi fellow rubyists,

11 messages 2013/04/05

[#406555] How do you know what the main file in Ruby Projects is? — peteV <pete0verse@...>

Hi Ruby people,

18 messages 2013/04/05
[#406558] Re: How do you know what the main file in Ruby Projects is? — "Carlo E. Prelz" <fluido@...> 2013/04/05

Subject: How do you know what the main file in Ruby Projects is?

[#406560] Re: How do you know what the main file in Ruby Projects is? — Hans Mackowiak <lists@...> 2013/04/05

Carlo E. Prelz wrote in post #1104616:

[#406562] Re: How do you know what the main file in Ruby Projects is? — "D. Deryl Downey" <me@...> 2013/04/05

Actually its not wrong. What it does is explicitly state which ruby

[#406563] Re: How do you know what the main file in Ruby Projects is? — Matt Lawrence <matt@...> 2013/04/05

On Sat, 6 Apr 2013, D. Deryl Downey wrote:

[#406564] Re: How do you know what the main file in Ruby Projects is? — Hans Mackowiak <lists@...> 2013/04/05

Matt Lawrence wrote in post #1104625:

[#406566] Re: How do you know what the main file in Ruby Projects is? — Matt Lawrence <matt@...> 2013/04/05

On Sat, 6 Apr 2013, Hans Mackowiak wrote:

[#406570] Re: How do you know what the main file in Ruby Projects is? — Matthew Mongeau <halogenandtoast@...> 2013/04/05

I'm interested in the issue with using env, but I find you explanation a but=

[#406600] Mapping string data ptr to buffer in ffi — se gm <lists@...>

I'm trying to implement some "shared memory" in Ruby, but I'm not sure

20 messages 2013/04/08

[#406683] confusion with Struct class — Love U Ruby <lists@...>

I went to there - http://www.ruby-doc.org/core-2.0/Struct.html but the

29 messages 2013/04/11
[#406694] Re: confusion with Struct class — Love U Ruby <lists@...> 2013/04/11

Why does every time the has value getting changed,while the instance

[#406762] Why does #content method in nokogiri not printing the full text? — Love U Ruby <lists@...>

Here is the documentation: http://www.rubydoc.info/gems/nokogiri/frames

19 messages 2013/04/14
[#406764] Re: Why does #content method in nokogiri not printing the full text? — tamouse mailing lists <tamouse.lists@...> 2013/04/14

On Sun, Apr 14, 2013 at 11:19 AM, Love U Ruby <lists@ruby-forum.com> wrote:

[#406874] Input: sentence Modify: words Output: modified sentence — Philip Parker <lists@...>

I am new to Ruby. This is a programming interview question to use any

11 messages 2013/04/19

[#406912] Tap method : good or bad practice ? — Sébastien Durand <lists@...>

Hi all !

18 messages 2013/04/21

[#406936] BEGINNER -CLASS QUERY — shaik farooq <lists@...>

HEY as we know that the object conatins the instance variables that are

22 messages 2013/04/22

[#406966] copying files syntax with FileUtils.rb (grr.) — Thomas Luedeke <lists@...>

In my Ruby scripting, there is probably no greater and chronic source of

10 messages 2013/04/23

[#406969] what is the $- magic global? — Matthew Kerwin <lists@...>

I've been searching for the past hour or so, including manually stepping

13 messages 2013/04/24

[#407059] New Rexx like data structure — Peter Hickman <peterhickman386@...>

This is just something that I have been playing with for some time but I

11 messages 2013/04/29

[#407070] writing lines to a file — peteV <pete0verse@...>

I have a text file with on every line a magic card number and such info

13 messages 2013/04/29

Re: confusion with class_eval

From: 7stud -- <lists@...>
Date: 2013-04-04 05:18:34 UTC
List: ruby-talk #406479
Hi,

Note that the effect you are seeing doesn't occur in this case:

class A
  @@x = 10
end

puts A.class_variable_get(:@@x)
puts Object.class_variable_get(:@@x)

--output:--
10
1.rb:6:in `class_variable_get': uninitialized class variable @@x in 
Object (NameError)
  from 1.rb:6:in `<main>'

So the problem does have to do with class_eval. I don't have a 
definitive explanation of what's going on, but "Metaprogramming Ruby" 
teaches us that class_eval changes self to the receiver, and the 
'current class' also changes to the receiver as well.  Based on that 
'rule', it would be natural to assume that class variables appearing for 
the firs time inside the block would attach to the current class. 
However, that is clearly not the case.

Because the problem manifests itself when you use a block (as part of 
your class_eval), the block is the key to the problem.  Blocks are 
closures, which means they can see the variables defined in the 
surrounding code.  Blocks can also change the values in the surrounding 
code.  Here is an example of that:

x = 10
code = lambda {puts x; x = 'hello'}

code.call
puts x

--output:--
10
hello


In your case, the surrounding code is the 'top level' where an object 
called 'main' exists (created by ruby at startup), and main is an object 
of class Object.  So your block can see those things in the surrounding 
scope, or, in other words, your block travels around with a 'binding' 
that includes all the variables in the surrounding code and their 
values.  I think ruby must look for something in the binding  to attach 
class variables to--rather than using the 'current class'.

Your output shows that the class variable attaches to the class Object, 
but the details of how that works are not clear to me.   However, the 
fact that class variables leak out of a block seems like yet another 
reason not to use class variables.

-- 
Posted via http://www.ruby-forum.com/.

In This Thread

Prev Next