On Thu, 21 Aug 2008, Jean Lazarou wrote:
Ok sorry for all... I am giving up herre.
No need to give up, make the problem smaller so you can describe it
easily. You have raised a whole lot of different things at once, and
I can't figure out what you want to know. So far you have discussed
scoping, instance variables, global variables, and method declarations,
as well as what class you are working in. That's a lot to cover.
The intent of shoes is to make programming easy and fun. So we need
to know how to describe stuff to people not used to this. I've been
using Ruby since 2000, so to get "beginner's mind" back is a bit tricky
for me. So that's why I'm really trying to persuade you to attack this,
but systematically.
I'm not sure if Shoes is intended by _Why to be understood on its own
without reference to Ruby, but given that it is to introduce people to
programming (like Hackety Hack) then I would think that is necessary.
So we need to write docs that reflect the problems people are having
in understanding this stuff. So we need to know what your problems
are as much as you need them solved.
So don't give up! Tell us what your code looks like now, and what
you want to change it to, why (your reasons will tell us things
about your understanding), and what happens when you do. Then
tell us how much sense the result makes. Keep the steps really small,
though.
Hugh
On Thu, Aug 21, 2008 at 11:52 AM, Hugh Sasse <[EMAIL PROTECTED]> wrote:
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