Ruby/Array/Compare Array

Материал из Wiki.crossplatform.ru

Версия от 17:10, 26 мая 2010; (Обсуждение)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Содержание

compare arrays is with <=> (spaceship operator).

# it compares each object in the arrays. 
# The two arrays are considered equal if they are the same length and if the value element is equal to the corresponding element in the other array. 
# When a comparison is made, it determines whether the values of the compared elements are greater than, lesser than, or equal to each other. 
# Rather than true or false, the comparison returns an integer: -1 for less than, 0 for equal, and 1 for greater than.
myArray1 = [ "full", 40, "yes" ]
myArray2 = ["part", 23, "no"]
myArray2 <=> myArray2 # => 0
myArray1 <=> myArray2 # => -1
myArray2 <=> myArray1 # => 1



Comparing Arrays

# The == method compares two arrays to test if they are equal. 
# Two arrays are considered equal if 
# (1) they contain the same number of elements, and 
# (2) each element is equal to the corresponding element in the other array (compare with Object#==).
# Compare these arrays with ==
myArray1 = [ "full", 40, "yes" ]
myArray2 = ["part", 23, "no"]
myArray3 = [ "full", 40, "yes" ]
myArray2 == myArray2 # => true
myArray1 == myArray3 # => true
myArray3 == myArray2 # => false



Comparison: Returns an integer -r +1, if this array is less than, equal to, or greater than other_array.

p [ "a", "a", "c" ] <=> [ "a", "b", "c" ]  
p [ 1,2, 3, 4,5, 6 ] <=>[ 1, 2 ]



eql? returns true if the objects are the same or if their content is the same.

# eql? checks to see if the values are equal (as in ==), but also checks if the values are of the same type.
myArray1 = [ "full", 40, "yes" ]
myArray2 = ["part", 23, "no"]
myArray3 = [ "full", 40, "yes" ]
myArray1 == myArray3 # => true
myArray1.eql?( "full, 40, yes" ) # => false, myArray1 is not a string



Equality: equal if they contain the same number of elements and if each element is equal to the corresponding element in the other array.

puts [ "a", "c" ] == [ "a", "c", 7 ]  
puts [ "a", "c", 7 ] == [ "a", "c", 7 ]  
puts [ "a", "c", 7 ] == [ "a", "d", "f" ]