On Thu, 21 Aug 2008, Jean Lazarou wrote:

That's what I thought, but then I must change the code I want to run (see
highlighted code)

This is a mailing list.  The text appears as plain text for many
readers.  There is therefore no highlight.  Even if there were a
highlight, it doesn't tell us what change you have in mind.

You should not be sending HTML to a mailing list, if you are
expecting me to see some highlight in the HTML.  See these for
plenty of reasons why not:
http://www.american.edu/cas/econ/htmlmail.htm
http://www.expita.com/nomime.html
and elsewhere.


 Shoes.app :height => 260, :width => 250 do
   animate(1) do
     @time = Time.now
     clear do
       $app.draw_background
       stack do
         puts "Time = [EMAIL PROTECTED]"
       end
     end
   end
   def draw_background
   end
 end

And would ideally like not change that code...

You already have.  You redefined Shoes.app so it calls the block
after not doing any setup, and so it does nothing with the result:

>       13 class Shoes
>       14
>       15    def self.app params
>       16      yield
>       17    end
>       18
>

That changes the meaning of Shoes.app.

Am I right?

I don't know what you are expecting to happen, and why what you are
getting doesn't make sense to you.  Computer programming actually
relies heavily on the scientific method: "What did you expect, what
did you do to test that, what result did you get, and what did you
conclude from that?."  That's 4 possible places for there to be a
problem.  Your initial expectation may be wrong. You could do the
wrong experiment. You may incorrectly observe (and report) the
result.  You may draw the wrong conclusion from it.  This sort of
thing happens all the time.  That is why science has a peer review
process.


-Jean

        Hugh

On Thu, Aug 21, 2008 at 6:48 AM, Ernest Prabhakar
<[EMAIL PROTECTED]> wrote:
      Hi Jean,
      On Aug 20, 2008, at 4:59 PM, Jean Lazarou wrote:

      Hi Ernest,

      Where does the '$app' come from?


That's just a global that you initialize from *inside* the
'Shoes.app' section of your code, so you can refer to it elsewhere.

Look at some of the examples, like tankspank.

-enp



      -Jean


      On Wed, Aug 20, 2008 at 11:26 PM, Ernest Prabhakar
      <[EMAIL PROTECTED]> wrote:
            Hi Jean,

            You may want to try the:

                  $app = self
                  $app.draw_background


            trick....

            -enp



On Aug 20, 2008, at 11:22 AM, Jean Lazarou wrote:

      Thank you all for answering, but if I go
      for simplicity nothing works...

      34 Shoes.app :height => 260, :width => 250
      do
      35   animate(1) do
      36     @time = Time.now
      37     clear do
      38       draw_background
      39       stack do
      40         puts "Time = [EMAIL PROTECTED]"
      41       end
      42     end
      43   end
      44   def draw_background
      45     puts "draw_background"
      46   end
      47 end

      If I define a Shoes class as following and
      some methods (like animate):

      13 class Shoes
      14
      15    def self.app params
      16      yield
      17    end
      18
      19
      20 end
      21
      22  def animate fps, &block
      23    yield
      24  end
      25
      26  def clear
      27    yield
      28  end
      29
      30  def stack
      31    yield
      32  end

      I get

      test.rb:38: undefined local variable or
      method `draw_background' for
      #<Object:0x288fa34 @time=Wed Aug 20
      19:56:46 +0200 2008> (NameError)
         from test.rb:27:in `clear'

      I don't find any easy way to make the code
      run. Of course, if I comment the call to
      `draw_background' (line 38) I get the
      output => Time = Wed Aug 20 20:03:22 +0200
      2008

      (I run the code with the C-Ruby runtime)

      Is there some Ruby technical I don't know?

      Jean






Reply via email to