[#1263] Draft of the updated Ruby FAQ — Dave Thomas <Dave@...>

33 messages 2000/02/08

[#1376] Re: Scripting versus programming — Andrew Hunt <andy@...>

Conrad writes:

13 messages 2000/02/15

[#1508] Ruby/GTK and the mainloop — Ian Main <imain@...>

17 messages 2000/02/19
[#1544] Re: Ruby/GTK and the mainloop — Yasushi Shoji <yashi@...> 2000/02/23

Hello Ian,

[#1550] Re: Ruby/GTK and the mainloop — Ian Main <imain@...> 2000/02/23

On Wed, Feb 23, 2000 at 02:56:10AM -0500, Yasushi Shoji wrote:

[#1516] Ruby: PLEASE use comp.lang.misc for all Ruby programming/technical questions/discussions!!!! — "Conrad Schneiker" <schneiker@...>

((FYI: This was sent to the Ruby mail list.))

10 messages 2000/02/19

[#1569] Re: Ruby: constructors, new and initialise — Yukihiro Matsumoto <matz@...>

The following message is a courtesy copy of an article

12 messages 2000/02/25

[ruby-talk:01275] Re: Draft of the updated Ruby FAQ

From: Clemens Hintze <clemens.hintze@...>
Date: 2000-02-09 14:50:35 UTC
List: ruby-talk #1275
Hello Dave,

I am reading your newest FAQ! It becomes more and more perfect, IMHO
;-) But unfortunately I have to disturb you again ... please be
patient with me :-}

2.3 When does a local variable become accessible?
    A local variable becomes accessible after the first assignment
    statement to that variable appears in the source (which is not the
    same as the first time an assignment statement is executed).

Your explaination is ok, but, IMHO, I feel we could describe it more
explicite. 

We should explain the user, that the compiler has to decide on compile
time, whether a mentioned symbol means variable access or method call
(performance and architectural reasons; variable access is *very*
difficult from method invocation).

On runtime the interpreter will execute whatever was compiled
(variable access or method invocation). This can be very surprising
and could result in a difficult to locate bug, probably! 

If you consider the example below you will find, that there is no
error message printed by ruby. But the result will be very
surprising, I guess ;-)

   def a
      print "Function 'a' called!\n"
      99
   end

   for i in 1..2
     if i == 2
       print "a=", a, "\n"
     else
       a = 1
       print "a=", a, "\n"
     end
   end 

What do you think?

3.3 How is a block used in an iterator?

Nice, but could you explicite explain, that blocks are not consumed by
'Proc.new', 'lambda' and 'proc'? So the last example would become more
clear. If not, I could ask myself with what block does 'proc' operate
with? Because the block was already used by 'Proc.new'!

4.1 What does :var mean?

Again, I cannot see the reason why it is important for the user to
know, that the ':var' form will create local symbols.

Your example would also work with:

   NORTH = "NORTH".intern
   SOUTH = "SOUTH".intern
   EAST  = "EAST".intern
   WEST  = "WEST".intern

Ugly ... but possible. For me (the user), I could think of ':var' as
intern aliasing of '"var".intern'. I do not need the knowledge, that
':var' will create a local symbol. Please look the following example:

   print "Before catch\n"
   catch("WWW".intern) do
      print "Before throw\n"
      throw "WWW".intern
      print "After throw\n"
   end
   print "After catch\n"

Do you see any reason I should know this special internal thing? 

4.2 How can I access the value of a symbol?

If you ask this question, would it make sense also to ask: How can I
access the method behind a symbol?


Regards,
\cle

In This Thread