Prev: upgrading gems with native dependencies
Next: Can't install Mongrel and My SQL gem on Windows XP 64 bit
From: Quintus on 3 Aug 2010 05:46 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Am 03.08.2010 11:02, schrieb Eugen Ciur: > Look here > http://svn.ruby-lang.org/repos/ruby/tags/v1_9_1_0/NEWS > > Since v 1.9.1 block arguments (in our case |num|) are always local, > i.e in 'each' block |num| will not conflict > with outer 'num' variable. In your machine you have 1.9.1 version. > Additionally, if you run ruby with warnings enabled, you get notified: marvin(a)ikarus:~$ ruby -w array = [1,2,3,4,5] x = 1 num = 1 array.each{|num| puts num*20 + x} - -:4: warning: shadowing outer local variable - num puts num 21 41 61 81 101 1 marvin(a)ikarus:~$ ruby -v ruby 1.9.1p429 (2010-07-02 revision 28523) [x86_64-linux] marvin(a)ikarus:~$ Marvin -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAkxX5XwACgkQDYShvwAbcNksbQCfaq3nuXGd4OZNB3c1RGYeA2xS 2o0AoIfKBAfM8UttAfamaFxW9jwwJkOr =orQI -----END PGP SIGNATURE-----
From: David A. Black on 3 Aug 2010 17:31 Hi -- On Tue, 3 Aug 2010, Eugen Ciur wrote: > Not exactly. Blocks defines a new variable scope, however blocks have access > to variables defined outside block scope. > Thus, a variable defined outside block will be modified inside block (for > ruby 1.8.6). In Ruby 1.9.1 too, for non-parameter variables -- for example: a = nil 10.times {|i| a = i } p a # 9 David -- David A. Black, Senior Developer, Cyrus Innovation Inc. The Ruby training with Black/Brown/McAnally Compleat Philadelphia, PA, October 1-2, 2010 Rubyist http://www.compleatrubyist.com
From: Barchil Barchil on 9 Aug 2010 20:07 Amir Ebrahimifard wrote: > Hi > What does happen for "num" variable in this code : > > array = [1,2,3,4,5] > x = 1 > num = 1 > array.each { |num| puts num*20 + x } > > ( after this code when I type "puts num , ruby return 5 ! why? ) I tried your code i added this at the end puts(num) i have this : 21 41 61 81 101 1 and i think its a correct response because we have two variables one have the scope in the block who have at the end of iteration 5 the other variable have the value 1 witch is displayed sorry for my bad English :( -- Posted via http://www.ruby-forum.com/.
First
|
Prev
|
Pages: 1 2 Prev: upgrading gems with native dependencies Next: Can't install Mongrel and My SQL gem on Windows XP 64 bit |