nad
November 15, 2007, 10:59am
1
hi
i have written a array like this.
my_array = [“one”,“two”,“three”,“four”]
no i want to check a given string is can be found from the above array.
eg:
if ( my_array.map{"one"} )
return true;
else
return false;
end
so here if i use “five” insted of “one” it should return false( as i
think) but it does no happen.
(simply want to check a given string is in the array or not)
so if any body can help???
nad
November 15, 2007, 11:07am
2
Nadeesha M. wrote:
(simply want to check a given string is in the array or not)
if my_array.include?(“one”)
Best regards,
Jari W.
nad
November 15, 2007, 11:10am
3
-------- Original-Nachricht --------
Datum: Thu, 15 Nov 2007 18:59:07 +0900
Von: Nadeesha M. [email protected]
An: [email protected]
Betreff: Array checking ???
eg:
(simply want to check a given string is in the array or not)
so if any body can help???
Posted via http://www.ruby-forum.com/ .
Dear Nadeesha,
you can use
class Array
def contains_entry?(entry)
if self-[entry]==self
return false
else
return true
end
end
end
a=[“one”,“two”,3,4]
p a.contains_entry?(“three”)
The idea is to see whether the array stays the same when you take
away something from it - if yes, that something wasn’t in the array
in the first place.
Best regards,
Axel
nad
November 15, 2007, 11:52am
4
Hi –
On Thu, 15 Nov 2007, Axel E. wrote:
else
–
else
in the first place.
No, you definitely don’t want to do that, for many reasons. As Jari
said, just use include?
if array.include?(entry)
David
nad
November 15, 2007, 12:30pm
6
On Nov 15, 2007 5:59 PM, Nadeesha M. > my_array =
[“one”,“two”,“three”,“four”]
no i want to check a given string is can be found from the above array.
many ways
try,
~> my_array.index “five”
=> nil
~> my_array.include? “five”
=> false
~> my_array.any?{|e| e== “five”}
=> false
i like index since it’s fast and it also returns the position if
found. wish include? would do that too.
anyway, all of those meth above has its unique advantage though. eg,
with any?, you can do fancy search…
kind regards -botp
nad
November 15, 2007, 4:58pm
7
On Nov 15, 2007 4:59 AM, Nadeesha M. [email protected]
wrote:
eg:
(simply want to check a given string is in the array or not)
so if any body can help???
Others have told you what works. Let’s talk about why this doesn’t.
What does the map method do? Here’s the ri doc
array.map {|item| block } → an_array
Invokes block once for each element of self . Creates a new
array containing the values returned by the block
Normally you have an argument in the block attached to map, to receive
each element of the array, you didn’t but Ruby let’s you get away with
that.
Now let’ run your code and see what the map returns:
my_array = [“one”,“two”,“three”,“four”]
my_array.map{“one”} # => [“one”, “one”, “one”, “one”]
So it’s just an array with the same number of elements, each with a
value of “one”.
And since it’s neither false, nor nil, this will always be treated as
true in a boolean context.
–
Rick DeNatale
My blog on Ruby
http://talklikeaduck.denhaven2.com/
nad
November 15, 2007, 12:26pm
8
-------- Original-Nachricht --------
Datum: Thu, 15 Nov 2007 19:51:58 +0900
Von: “David A. Black” [email protected]
An: [email protected]
Betreff: Re: Array checking ???
eg:
class Array
p a.contains_entry?(“three”)
David
–
Upcoming training by David A. Black/Ruby Power and Light, LLC:
Advancing With Rails, Berlin, Germany, November 19-22
Intro to Rails, London, UK, December 3-6 (by Skills Matter)
See http://www.rubypal.com for details!
Dear Nadeesha,
indeed, Jari’s solution is way better. Shorter, more elegant.
I wouldn’t have written
a post had Jari’s response already been on the list.
Best regards,
Axel