๋ชฐ๋๋ ๊ฒ์ ๋ํด ์ ๋ฆฌํ๊ณ ๊ณต์ ํ๋ ๊ธ
Ruby์ ๏ผ๏ผ๏ผ์ฐ์ฐ์์ ๋ํด ์ ๋ฆฌํ๊ณ ๋ฒ์ญํ ๊ธ์
๋๋ค.
(์ง๊ธ๊น์ง ๋ณธ์ ์ด ์์๋๋ฐ ์ฝ๋๋ฅผ ์ฝ์ด๋ณด๋ ๊ฐ๋ ๋์์ ์ ๋ฆฌํด๋ณด์๋ค)
๐ธ ์ฐ๋ฆฌ๊ฐ ์๊ณ ์๋ ์ด๋ฐ ์ฐ์ฃผ์ ๊ณผ ๋ฎ์(?) ์ด๋ฆ์ด ๋ถ์ฌ์ง <=>๋ฅผ ์์๋ณด๊ณ ์ ํ๋ค.
(์์ด : Three-way comparison, ์ผ๋ณธ์ด : ๅฎๅฎ่นๆผ็ฎๅญ, ํ๊ตญ์ด : ์ฐ์ฃผ์ ์ฐ์ฐ์
์ด ์ฐ์ฃผ ์ฐ์ฐ์๋ ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ์ ๋น๊ตํ๋ ๊ฒ์ ๋ค๋ฅธ ๋น๊ต์ฐ์ฐ์์ ๊ฐ์ง๋ง ์ฌ์ฉ๋ฐฉ๋ฒ์ด ์กฐ๊ธ ๋ณต์กํ๋ค.
๋จ์ง ๋ค๋ฅธ ์ฐ์ฐ์๋ true๋๋ false๋ฅผ ์๊ตฌํ ๋์ ์ด์ฉํ์ง๋ง ์ฐ์ฃผ์ฐ์ฐ์์ ๊ดํด์๋ ๋น๊ต๊ฒฐ๊ณผ๋ฅผ ์์น
๐ข๋ก ํ์ํ๋ค.
์์
100 <=> 200 ... -1
200 <=> 100 ... 1
200 <=> 200 ... 0
100 <=> '100' ... nil
โฌ๏ธ ์์ ์ฝ๋์ฒ๋ผ
์ข์ธก์ด ์ค๋ฅธ์ชฝ๋ณด๋ค ์์ผ๋ฉด ์์(-1)
์ข์ธก์ด ์ค๋ฅธ์ชฝ๋ณด๋ค ํฌ๋ค๋ฉด ์ ์( 1)
์ข์ธก๊ณผ ์ค๋ฅธ์ชฝ์ด ๊ฐ๋ค๋ฉด ์ ๋ก( 0)
๋กํ์ํ๋ค
๋น๊ต๊ฐ ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ๋ค๋ nil
์ด ๋๋ค.
์์ ๊ณผ ๋ค๋ฅธ๊ฒ(other)์ ๊ฐ ์์๋ฅผ ์๋ก <=>๋ก ๋น๊ตํ๊ณ ๊ฒฐ๊ณผ๊ฐ 0์ด ์๋๋ฉด ๊ทธ ๊ฐ์ ๋๋ ค์ค๋ค.
-1
์ ๊ทธ๋ ์ง ์์ผ๋ฉด 1์ ๋๋ ค์ค๋ค. ์๋์ ์์๋ฅผ ํ์ธํ์ฌ ๋ณด์
[ 1, 2, 3 ] <=> [ 1, 3, 2 ] #=> -1
[ 1, 2, 3 ] <=> [ 1, 2, 3 ] #=> 0
[ 1, 2, 3 ] <=> [ 1, 2 ] #=> 1
์ ๋ ฌ์ ํ ๋ ๋ง์ด ์ฐ์ด๋ ๊ฒ ๊ฐ๋ค
users.sort{ |a, b| a.age <=> b.age }
์์ง ๋ง์ ๊ธ์ ์ฐ์ง์๊ณ ์ผ๋ณธ์ด๋ ์ํด๋ฌ ๊ธ์ด ์๋ง์ง์ฐฝ์ธ๊ฒ ๊ฐ๋ค. ์กฐ๊ธ์ฉ ๊ธ์ ์จ๋๊ฐ๋ฉด์ ๊ฐ์ ํด๋๊ฐ๊ณ ์ ํ๋ค.
์์ผ๋ก๋ ruby๋ฅผ ๊ณต๋ถํ๋ ์ฌ๋๋ค์๊ฒ ๋์์ด ๋๊ณ ์ ์ด๋ ๊ฒ ๊ธ์ ์กฐ๊ธ์ฉ ์จ๋ด๋ ค๋๊ฐ๊ณ ์ ํ๋ค!
[์ฐธ๊ณ ์ฌ์ดํธ (์ผ๋ณธ)]
https://docs.ruby-lang.org/ja/latest/method/Array/i/=3c=3d=3e.html
https://blog.codecamp.jp/posts-34186