Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > Identifying

Reply
Thread Tools

Identifying

 
 
Adam Akhtar
Guest
Posts: n/a
 
      02-09-2008
If you have an array which contains a mixture of say intergers and
nested arrays, how can you determine whether an element is an array or
not

ie in psedo code

array.each do |x|
if x == Array
do something
end

whats the corect way to write the if statement?

Thanks

Adam.
--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
 
 
 
Adam Akhtar
Guest
Posts: n/a
 
      02-09-2008

> ie in psedo code
>
> array.each do |x|
> if x == Array
> do something
> end
>
> whats the corect way to write the if statement?
>
> Thanks
>
> Adam.


in the above array = [1,2,3,[34,56,43,7],6,7] etc
--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
 
 
 
PullMonkey
Guest
Posts: n/a
 
      02-09-2008
[Note: parts of this message were removed to make it a legal post.]

if x.class == Array
or
if x.is_a?(Array)

irb(main):008:0> [1,2,3,[34,56,43,7],6,7].map{|x| x.is_a?(Array)}
=> [false, false, false, true, false, false]


On Feb 9, 2008 3:01 PM, Adam Akhtar <(E-Mail Removed)> wrote:

>
> > ie in psedo code
> >
> > array.each do |x|
> > if x == Array
> > do something
> > end
> >
> > whats the corect way to write the if statement?
> >
> > Thanks
> >
> > Adam.

>
> in the above array = [1,2,3,[34,56,43,7],6,7] etc
> --
> Posted via http://www.ruby-forum.com/.
>
>


 
Reply With Quote
 
Stefano Crocco
Guest
Posts: n/a
 
      02-09-2008
Alle Saturday 09 February 2008, Adam Akhtar ha scritto:
> If you have an array which contains a mixture of say intergers and
> nested arrays, how can you determine whether an element is an array or
> not
>
> ie in psedo code
>
> array.each do |x|
> if x == Array
> do something
> end
>
> whats the corect way to write the if statement?
>
> Thanks
>
> Adam.


if x.is_a? Array

Stefano


 
Reply With Quote
 
Farrel Lifson
Guest
Posts: n/a
 
      02-09-2008
On 10/02/2008, Adam Akhtar <(E-Mail Removed)> wrote:
> If you have an array which contains a mixture of say intergers and
> nested arrays, how can you determine whether an element is an array or
> not
>
> ie in psedo code
>
> array.each do |x|
> if x == Array
> do something
> end
>
> whats the corect way to write the if statement?


Use a case statement:

array.each do |x|
case x
when Array: do something
when Integer: do something
end
end

Farrel

 
Reply With Quote
 
Adam Akhtar
Guest
Posts: n/a
 
      02-09-2008
Farrel Lifson wrote:

> Use a case statement:
>
> array.each do |x|
> case x
> when Array: do something
> when Integer: do something
> end
> end


is

when Array: do something

a valid statement??

is

if x == Array

also a valid statement??

i was expecting having to use something like x.is_a as Stefano said.
--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
Tim Hunter
Guest
Posts: n/a
 
      02-09-2008
Adam Akhtar wrote:
> Farrel Lifson wrote:
>
>> Use a case statement:
>>
>> array.each do |x|
>> case x
>> when Array: do something
>> when Integer: do something
>> end
>> end

>
> is
>
> when Array: do something
>
> a valid statement??
>
> is
>
> if x == Array
>
> also a valid statement??
>
> i was expecting having to use something like x.is_a as Stefano said.



when Array:

is valid in the context of a case expression.

if x == Array

is also valid, but will only be true if x is in fact Array, that is

x = Array
if x == Array # will be true

For all other things, it will be false.

Here's an online copy of the 1st Edition of _Programming_Ruby_, which
will help answer these questions:
http://www.ruby-doc.org/docs/ProgrammingRuby/


--
RMagick: http://rmagick.rubyforge.org/
RMagick 2: http://rmagick.rubyforge.org/rmagick2.html

 
Reply With Quote
 
Christopher Dicely
Guest
Posts: n/a
 
      02-09-2008
On Feb 9, 2008 2:00 PM, Adam Akhtar <(E-Mail Removed)> wrote:
> If you have an array which contains a mixture of say intergers and
> nested arrays, how can you determine whether an element is an array or
> not
>
> ie in psedo code
>
> array.each do |x|
> if x == Array
> do something
> end
>
> whats the corect way to write the if statement?



Depending on exactly what you want there are two main ways (with
several different ways of expressing the most common):

if x.instance_of? Array ... # tests if x is an Array (strictly)
if x.kind_of? Array ... # test if x is an instance of Array or one of
its descendants
if x.is_a? Array ... # same as kind_of?
if Array === x ... # same as kind_of?, useful to know exists because
it lets you match against classes in case statements

 
Reply With Quote
 
Christopher Dicely
Guest
Posts: n/a
 
      02-09-2008
On Feb 9, 2008 2:14 PM, Adam Akhtar <(E-Mail Removed)> wrote:
> Farrel Lifson wrote:
>
> > Use a case statement:
> >
> > array.each do |x|
> > case x
> > when Array: do something
> > when Integer: do something
> > end
> > end

>
> is
>
> when Array: do something
>
> a valid statement??


Yes. "when" uses the === method of the object given, and Array is a
constant instance of class Class, and Class#===(obj) (inherited from
Module) is equivalent to obj.kind_of?(self)

>
> is
>
> if x == Array
>
> also a valid statement??


x == Array is a *valid* statement, but it doesn't mean the same thing.

case x
when Array: ...
end

is the same as:

if Array === x then ... end

not:

if x == Array then ... end

> i was expecting having to use something like x.is_a as Stefano said.


As is oft the case with Ruby, there is more than one way to do it.

 
Reply With Quote
 
Adam Akhtar
Guest
Posts: n/a
 
      02-10-2008
thats brilliant. ive never seen === before. I thought it was a typo at
first. Ill look into those methods now. Thanks


--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Identifying the new Session ID thomson ASP .Net 3 10-06-2005 02:31 PM
Identifying the element ID in a client script from a WebControl kw ASP .Net 9 08-24-2004 01:26 AM
Identifying Web Development Competence Jeff S ASP .Net 18 07-12-2004 12:45 PM
Identifying calls from anchors =?Utf-8?B?UGF1bCBL?= ASP .Net 2 06-18-2004 03:39 AM
Identifying the data difference before and After PostBack Dinesh Upare ASP .Net 0 11-07-2003 10:37 AM



Advertisments