[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

var = nil if false; p var.nil? #=> true | bug of the day ?

Arie Kusuma Atmaja

4/11/2008 5:15:00 AM

I tested it using Ruby 1.8.6 patch 111 and also Ruby 1.9.0 (revision 15968).

var = nil if false
var.nil? #=> true

I actually saw it from tobi's blog, then I discussed with a perler who
loves ruby as well, here's a copy paste. (Bottomline: is it a feature
or a bug????)

12:52:37 PM edpratomo: kok bisa gitu? (yg irb itu)
12:52:49 PM Rie!: bug of the day -_-
12:52:56 PM edpratomo: ruby 1.9?
12:53:28 PM Rie!: 1.8.6 as well
12:55:09 PM edpratomo: oh i understand
12:55:31 PM edpratomo: var = nil if false creates var
12:56:01 PM Rie!: it's just like the stupid param variable is still
available outside of the block/yield
12:56:07 PM edpratomo: irb(main):005:0> var = "blah" if false
=> nil
irb(main):006:0> var
=> nil

12:56:32 PM edpratomo: so it's not a bug
12:56:58 PM edpratomo: ever got bitten by the leaky block scope?
12:57:18 PM Rie!: how come it's not a bug :-B var should be undefined local var
12:57:20 PM Rie!: not nil
12:57:51 PM edpratomo: try to post that to ruby-talk :-) i believe you
will get "it's not a bug" replies
12:58:11 PM Rie!: that's from tobias luetjke blog
12:58:20 PM Rie!: so i believe many rubyists had noticed that
12:58:46 PM edpratomo: has been discussed in ruby-talk/core?
12:58:58 PM Rie!: haven't checked yet
1:00:02 PM edpratomo: imho it's not a bug. that foo = nil if false
creates unitialized foo.
1:00:31 PM edpratomo: in perl iirc such expression will be caught
1:00:39 PM Rie!: well it shouldn't execute the command inside that if false
1:01:04 PM edpratomo: if the if clause is evaluated first.
1:03:56 PM edpratomo: perl -wle'my $foo = "ok" if 0; print $foo'
Use of uninitialized value in print at -e line 1.


1:04:45 PM edpratomo: perl -Mstrict -wle'my $foo = "ok" if 0; print $foo'
Use of uninitialized value in print at -e line 1
1:05:03 PM edpratomo: it's a warning. not error.
1:05:22 PM edpratomo: so $foo is created, but unitialized.
1:05:38 PM edpratomo: in perl it will issue warning

[in bahasa indonesia]

Saya sebetulnya melihat ini dari blog Tobi kemudian saya berdiskusi
bersama seorang pengguna perl yang juga mencintai ruby, berikut tadi
copy paste nya. (Inti dari pertanyaan saya adalah apakah ini fitur
ataukah bug di ruby????)



--
blog: http://tinyurl....,
ruby: http://www.ruby-lang.or...

"Developer Time is expensive...
Servers are cheap...", Ezra Zygmuntowicz - Merb

8 Answers

Dave Thomas

4/11/2008 5:24:00 AM

0


On Apr 11, 2008, at 12:14 AM, Arie Kusuma Atmaja wrote:
> I tested it using Ruby 1.8.6 patch 111 and also Ruby 1.9.0 (revision
> 15968).
>
> var = nil if false
> var.nil? #=> true

Ruby sees you have a local variable called 'var'. It hasn't been given
a value, and so is nil.


Dave

Phillip Gawlowski

4/11/2008 5:37:00 AM

0

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Arie Kusuma Atmaja wrote:
| I tested it using Ruby 1.8.6 patch 111 and also Ruby 1.9.0 (revision
15968).
|
| var = nil if false
| var.nil? #=> true
|
| I actually saw it from tobi's blog, then I discussed with a perler who
| loves ruby as well, here's a copy paste. (Bottomline: is it a feature
| or a bug????)

irb(main):001:0> something = "something" if false
=> nil
irb(main):002:0> something_else = nil
=> nil
irb(main):003:0> something_else.class
=> NilClass
irb(main):004:0> exit

- --
Phillip Gawlowski
Twitter: twitter.com/cynicalryan

~ My life needs a rewind/erase button.
-- Calvin
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.8 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail....

iEYEARECAAYFAkf++QEACgkQbtAgaoJTgL/0pgCgpnN3q2Ka1pPXwa7M4HmDZEvW
1t8AoJtxM8KASS4LHSmXe57vrzYC1Ney
=vxup
-----END PGP SIGNATURE-----

Damjan Rems

4/11/2008 7:19:00 AM

0

Arie Kusuma Atmaja wrote:
> I tested it using Ruby 1.8.6 patch 111 and also Ruby 1.9.0 (revision
> 15968).
>
> var = nil if false
> var.nil? #=> true
>

irb(main):001:0> a = 1
=> 1
irb(main):002:0> a = nil if false
=> nil
irb(main):003:0> a
=> 1
irb(main):004:0> b
NameError: undefined local variable or method `b' for main:Object
from (irb):4
irb(main):005:0> b = nil if false
=> nil
irb(main):006:0> b
=> nil

There is some salt in the problem althow I don't think that it makes any
troubles in real life.

by
TheR
--
Posted via http://www.ruby-....

Arie Kusuma Atmaja

4/11/2008 7:31:00 AM

0

On 11/04/2008, Dave Thomas <dave@pragprog.com> wrote:

> On Apr 11, 2008, at 12:14 AM, Arie Kusuma Atmaja wrote:
>
> > I tested it using Ruby 1.8.6 patch 111 and also Ruby 1.9.0 (revision
> 15968).
> >
> > var = nil if false
> > var.nil? #=> true
> >
>
> Ruby sees you have a local variable called 'var'. It hasn't been given a
> value, and so is nil.

Ok, I got it, thanks Dave.

m:x arie$ irb19
irb(main):001:0> a = 1
=> 1
irb(main):002:0> a
=> 1
irb(main):003:0> a = nil if false
=> nil
irb(main):004:0> exit
m:x arie$ irb19
irb(main):001:0> a = nil if false
=> nil
irb(main):002:0> a
=> nil
irb(main):003:0> exit
m:x arie$ irb19
irb(main):001:0> a
NameError: undefined local variable or method `a' for main:Object
from (irb):1
from /opt/local/ruby19/bin/irb19:12:in `<main>'
irb(main):002:0> a = 'nothing' if false
=> nil
irb(main):003:0> a
=> nil
irb(main):004:0> exit

> Dave


--
blog: http://tinyurl....,
ruby: http://www.ruby-lang.or...

"Developer Time is expensive...
Servers are cheap...", Ezra Zygmuntowicz - Merb

Robert Klemme

4/11/2008 9:58:00 AM

0

2008/4/11, Phillip Gawlowski <cmdjackryan@googlemail.com>:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Arie Kusuma Atmaja wrote:
> | I tested it using Ruby 1.8.6 patch 111 and also Ruby 1.9.0 (revision
> 15968).
> |
> | var = nil if false
> | var.nil? #=> true
> |
> | I actually saw it from tobi's blog, then I discussed with a perler who
> | loves ruby as well, here's a copy paste. (Bottomline: is it a feature
> | or a bug????)
>
> irb(main):001:0> something = "something" if false
> => nil
> irb(main):002:0> something_else = nil
> => nil
> irb(main):003:0> something_else.class
> => NilClass
> irb(main):004:0> exit

Be careful when testing issues that involve local variables in IRB.
Top level local variables such as these do behave differently in IRB.

Cheers

robert

--
use.inject do |as, often| as.you_can - without end

Arie Kusuma Atmaja

4/11/2008 10:53:00 AM

0

On 11/04/2008, Robert Klemme <shortcutter@googlemail.com> wrote:

> Be careful when testing issues that involve local variables in IRB.
> Top level local variables such as these do behave differently in IRB.

Oh I see, thanks for reminding Robert.

#!/usr/bin/ruby
# nil-check.rb

begin
p var1
rescue NameError => e
puts e.message
end

var1 = nil if false
p var1

begin
p var2
rescue NameError => e
puts e.message
end

var2 = 'nothing' if false
p var2

> Cheers
>
> robert
>
>
> --
> use.inject do |as, often| as.you_can - without end
>
>


--
blog: http://tinyurl....,
ruby: http://www.ruby-lang.or...

"Developer Time is expensive...
Servers are cheap...", Ezra Zygmuntowicz - Merb

konsisten

4/25/2014 4:53:00 AM

0

Pada Rabu, 23 April 2014 6:56:54 UTC+7, konsisten menulis:
> Pada Selasa, 22 April 2014 17:13:10 UTC+7, konsisten menulis:
>
> > Akan terulang peristiwa 2004 dmn ssdh JK menjadi cawapres, lalu lsg menjadi Ketum Golkar untuk membentuk koalisi PDIP-Golkar-Nasdem di Parlemen. Itu artinya apa di Pilpres ini? Golkar lebih lihai drpd partai lain, bermain di 'dua kaki' (selain ARB Capres). Masyarakat perlu menghukum Golkar yang tidak pernah mau menjadi oposisi, sejak Soeharto msh berjayapun, karena terbiasa hidup enak, mendompleng kekuasaan, caranya dengan gabungan yaitu koalisi Indonesia Raya. Saya tersenyum geli melihat Muhaimin Ketum PKB yang terus ngotot ingin memaksakan'bermimpi', berkoalisi dengan Jokowi, juga untuk PPP, kalau benar dugaan Wakil Sekjennya bicara di TV, bahwa ada oknum luar yg mengobok obok partainya untuk diadu domba dan dijelekkan citranya, sehingga hal menggelikan terjadi, yaitu Sekjen atau bawahan bisa pecat atasan (Ketum SDA), tanpa melalui Muktamar, didunia cuma ada di PPP. Partai agama jika bersatu membentuk koalisi Indonesia Raya dengan salah satu partai Nasionalis, maka mereka terlalu kuat untuk dilawan, makanya mereka harus dipecah dan diadu domba dahulu, terutama oleh para pengamat2 di TV yang berhaluan barat. Maaf saya bicara blak blakan. Apalagi jika Pilpres berlangsung 2 putaran....maka kemungkinan besar prediksi lembaga survey akan berbeda di lapangan. Semua rakyat tentunya ingin melihat Pilpres 2 putaran, lebih seru. Wujudkan....
>
>
>
> Maksud saya ....setelah pasangan SBY-JK terpilih di 2004, JK langsung 'mengkudeta' Akbar Tanjung dan terpilih sebagai ketua umum Golkar. Masyarakat perlu melek politik akan kepentingan jangka pendek Golkar...

Kalau sy boleh kasih masukan Jokowi: ini sdh contoh 'pakem'nya para pemimpin bijak di perusahaan swasta. Dalam memilih wakil, seorang pemimpin atau Dirut biasanya memepertimbangkan untuk memilih orang yang tidak ambisisus kemana mana kasak kusuk, dan pilihan selalu jatuh pada orang yang tidak disangka sangka. Kalau soal ekonomi, pilih seorang menteri ekonomi profesional saja yang cakap..dan jujur.

konsisten

4/25/2014 4:58:00 AM

0

Pada Rabu, 23 April 2014 6:56:54 UTC+7, konsisten menulis:
> Pada Selasa, 22 April 2014 17:13:10 UTC+7, konsisten menulis:
>
> > Akan terulang peristiwa 2004 dmn ssdh JK menjadi cawapres, lalu lsg menjadi Ketum Golkar untuk membentuk koalisi PDIP-Golkar-Nasdem di Parlemen. Itu artinya apa di Pilpres ini? Golkar lebih lihai drpd partai lain, bermain di 'dua kaki' (selain ARB Capres). Masyarakat perlu menghukum Golkar yang tidak pernah mau menjadi oposisi, sejak Soeharto msh berjayapun, karena terbiasa hidup enak, mendompleng kekuasaan, caranya dengan gabungan yaitu koalisi Indonesia Raya. Saya tersenyum geli melihat Muhaimin Ketum PKB yang terus ngotot ingin memaksakan'bermimpi', berkoalisi dengan Jokowi, juga untuk PPP, kalau benar dugaan Wakil Sekjennya bicara di TV, bahwa ada oknum luar yg mengobok obok partainya untuk diadu domba dan dijelekkan citranya, sehingga hal menggelikan terjadi, yaitu Sekjen atau bawahan bisa pecat atasan (Ketum SDA), tanpa melalui Muktamar, didunia cuma ada di PPP. Partai agama jika bersatu membentuk koalisi Indonesia Raya dengan salah satu partai Nasionalis, maka mereka terlalu kuat untuk dilawan, makanya mereka harus dipecah dan diadu domba dahulu, terutama oleh para pengamat2 di TV yang berhaluan barat. Maaf saya bicara blak blakan. Apalagi jika Pilpres berlangsung 2 putaran....maka kemungkinan besar prediksi lembaga survey akan berbeda di lapangan. Semua rakyat tentunya ingin melihat Pilpres 2 putaran, lebih seru. Wujudkan....
>
>
>
> Maksud saya ....setelah pasangan SBY-JK terpilih di 2004, JK langsung 'mengkudeta' Akbar Tanjung dan terpilih sebagai ketua umum Golkar. Masyarakat perlu melek politik akan kepentingan jangka pendek Golkar...

ICW: Golkar peringkat nr 1 politik uang di kampanye baru lalu
http://www.merdeka.com/politik/icw-golkar-paling-banyak-lakukan-pelanggaran-saat-kam...