# 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=>[5], 1=>[6, 7, 8, 9, 10]}
```