• #### Learn Ruby The Hard Way Exercise 19

From Cai Gengyang@21:1/5 to All on Mon Apr 18 11:24:00 2016
Hello,

So I am going through "Learn Ruby The Hard Way Exercise 19" -------------------------------------------http://learnrubythehardway.org/book/ex19.html .

It says to run this piece of code :

def cheese_and_crackers(cheese_count, boxes_of_crackers)
puts "You have #{cheese_count} cheeses!"
puts "You have #{boxes_of_crackers} boxes of crackers!"
puts "Man that's enough for a party!"
puts "Get a blanket.\n"
end

puts "We can just give the function numbers directly:"
cheese_and_crackers(20, 30)

puts "OR, we can use variables from our script:"
amount_of_cheese = 10
amount_of_crackers = 50

cheese_and_crackers(amount_of_cheese, amount_of_crackers)

puts "We can even do math inside too:"
cheese_and_crackers(10 + 20, 5 + 6)

puts "And we can combine the two, variables and math:" cheese_and_crackers(amount_of_cheese + 100, amount_of_crackers + 1000)

which will produce this result :

\$ ruby ex19.rb
We can just give the function numbers directly:
You have 20 cheeses!
You have 30 boxes of crackers!
Man that's enough for a party!
Get a blanket.
OR, we can use variables from our script:
You have 10 cheeses!
You have 50 boxes of crackers!
Man that's enough for a party!
Get a blanket.
We can even do math inside too:
You have 30 cheeses!
You have 11 boxes of crackers!
Man that's enough for a party!
Get a blanket.
And we can combine the two, variables and math:
You have 110 cheeses!
You have 1050 boxes of crackers!
Man that's enough for a party!
Get a blanket.

A little confused, what exactly is the point of the exercise --- Is it simply to introduce variables ?

It says in the text that this exercise is to reinforce the point that quote : "The variables in your function are not connected to the variables in your script." --- what does this sentence mean ?

Regards,
Gengyang

--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)
• From Robert Klemme@21:1/5 to Cai Gengyang on Mon Apr 18 21:25:57 2016
On 18.04.2016 20:24, Cai Gengyang wrote:

A little confused, what exactly is the point of the exercise --- Is
it simply to introduce variables ?

It says in the text that this exercise is to reinforce the point that
quote : "The variables in your function are not connected to the
variables in your script." --- what does this sentence mean ?

Apparently it tries to teach you the concept of "scope". But there is
more text on the page that should help you understand. It seems to be
called "... the hard way" for a reason... :-)

Cheers

robert

--
remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/

--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)
• From Cai Gengyang@21:1/5 to Robert Klemme on Mon Apr 18 14:25:12 2016
Might be missing something, but I don't see the word "scope" in the text. Is there a good simple , easy to understand definition of scope online on a website somewhere ?

On Tuesday, April 19, 2016 at 3:26:08 AM UTC+8, Robert Klemme wrote:
On 18.04.2016 20:24, Cai Gengyang wrote:

A little confused, what exactly is the point of the exercise --- Is
it simply to introduce variables ?

It says in the text that this exercise is to reinforce the point that
quote : "The variables in your function are not connected to the
variables in your script." --- what does this sentence mean ?

Apparently it tries to teach you the concept of "scope". But there is
more text on the page that should help you understand. It seems to be
called "... the hard way" for a reason... :-)

Cheers

robert

--
remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/

--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)
• From Robert Klemme@21:1/5 to Cai Gengyang on Mon Apr 18 23:36:28 2016
On 18.04.2016 23:25, Cai Gengyang wrote:
Might be missing something, but I don't see the word "scope" in the
text. Is there a good simple , easy to understand definition of scope
online on a website somewhere ?

Yes.

robert

--
remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/

--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)
• From Cai Gengyang@21:1/5 to Robert Klemme on Mon Apr 18 15:55:58 2016
This is what I found --- http://apidock.com/rails/ActiveRecord/NamedScope/ClassMethods/scope

But still don't see the link to exercise 19 --- There's no scope in it !

Lol ...

On Tuesday, April 19, 2016 at 5:36:36 AM UTC+8, Robert Klemme wrote:
On 18.04.2016 23:25, Cai Gengyang wrote:
Might be missing something, but I don't see the word "scope" in the
text. Is there a good simple , easy to understand definition of scope online on a website somewhere ?

Yes.

robert

--
remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/

--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)
• From viper11@gmail.com@21:1/5 to Cai Gengyang on Fri Apr 22 13:21:39 2016
On Monday, April 18, 2016 at 6:56:03 PM UTC-4, Cai Gengyang wrote:
This is what I found --- http://apidock.com/rails/ActiveRecord/NamedScope/ClassMethods/scope

But still don't see the link to exercise 19 --- There's no scope in it !

Lol ...

On Tuesday, April 19, 2016 at 5:36:36 AM UTC+8, Robert Klemme wrote:
On 18.04.2016 23:25, Cai Gengyang wrote:
Might be missing something, but I don't see the word "scope" in the
text. Is there a good simple , easy to understand definition of scope online on a website somewhere ?

Yes.

robert

--
remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/

If the variables outside of the function happened to have the same names as parameters to the function, you should still remember that they are pointing to different things. For example:

myvar=4
def f(myvar)
puts "myvar is #{myvar}"
end

f(3) #myvar is 3
myvar #4

The argument myvar is local to, or lives in the scope of, the function f.
icy`

--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)