 # Spaceship Operator <=>

The spaceship operator compares two objects (from left to right), returning either -1, 0, or 1.

### Explanation

`a <=> b`

``````return -1 if a < b
return 0 if a == b
return 1 if a > b
``````
``````4 <=> 7 # -1
7 <=> 7 # 0
7 <=> 4 # 1
``````

### Example one

As you know, in ruby (as in any language) we can get a result in different ways, we could use just the `sort` method, of course, but I just wanted to put this in another way:

``````languages = ['ruby', 'go', 'javascript', 'phyton', 'rust', 'elixir']

languages.sort{|first, second| first <=> second } # ["elixir", "go", "javascript", "phyton", "ruby", "rust"]

languages.sort{|first, second| second <=> first } # ["rust", "ruby", "phyton", "javascript", "go", "elixir"]
``````

### Example two

Suppose that we have the next array with the numbers `1 to 10`, and we will like to separate them into different groups: 1. One group for the numbers that are less than 5 2. Another group with the number 5 3. The last group with the numbers that are greater than 5

We could get this result by iterating the array and then by putting a couple of if statements in order to group these 3 categories, but with the spaceship operation we could get this result in an easier way:

``````numbers = Array(1..10)
target = 5

numbers.group_by{ |number| number <=> target } # {-1=>[1, 2, 3, 4], 0=>, 1=>[6, 7, 8, 9, 10]}
``````

Learned by samantha-bello on Nov 19, 2021