Rust: ์‚ผํ•ญ ์—ฐ์‚ฐ์ž ์ œ๊ฑฐ

์— ๋งŒ๋“  2012๋…„ 01์›” 29์ผ  ยท  29์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: rust-lang/rust

0.1 ๋ฐœํ‘œ ์ดํ›„ ์ €๋ฅผ ์‚ฌ๋กœ์žก์€ ์˜๊ฒฌ ์ค‘ ํ•˜๋‚˜๋Š” ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๊ฐ€ ์žˆ๋Š” ์ด์œ ๋ฅผ ๋ฌป๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ธฐ๋Šฅ์ ์œผ๋กœ ์šฐ๋ฆฌ์˜ if ํ‘œํ˜„์‹๊ณผ ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด ๊ฐ์ •์— ๋™๊ฐํ•œ๋‹ค

์ตœ๊ทผ์— ์ €๋Š” ์–ธ์–ด์— ๊ธฐ๋Šฅ์ด ๋น ๋ฅด๊ฒŒ ์ถ”๊ฐ€๋˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์šฐ๋ คํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์‹ค์ œ๋กœ ํ•„์š”ํ•˜์ง€ ์•Š์€ ์ผ์— ๋” ์‹ ์ค‘์„ ๊ธฐํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. Rust๊ฐ€ ๋ฐœํ‘œ๋˜์—ˆ์„ ๋•Œ ์›๋ž˜ ๋ช…๋ น ์ค‘ ํ•˜๋‚˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ฑฐํ•˜๋Š” ๋ฐ ์ค‘์ ์„ ๋‘๋Š” ๊ฒƒ์ด์—ˆ์œผ๋ฉฐ(์–ธ์–ด FAQ์— ์žˆ์Œ) ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๊ฒƒ์— ์„ฑ๊ณตํ–ˆ๋‹ค๊ณ  ์ฃผ์žฅํ•  ๋ฐฉ๋ฒ•์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋Š” ์œ ์ง€ ๊ด€๋ฆฌ๊ฐ€ ์ ์€ ๊ธฐ๋Šฅ์ด์ง€๋งŒ ์ œ๊ฑฐ ์‹œ์—๋„ ์˜ํ–ฅ์ด ์ ์Šต๋‹ˆ๋‹ค.

A-frontend E-easy

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋™์˜. JS๋ฅผ ํ‘œํ˜„ ์–ธ์–ด๋กœ ๋งŒ๋“ค์—ˆ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค. ํ›Œ๋ฅญํ•œ ๋ฌธ์žฅ/ํ‘œํ˜„์‹ ๋ถ„ํ• ์€ ?: ์— ๋™๊ธฐ๋ฅผ ๋ถ€์—ฌํ•˜์ง€๋งŒ Rust๋Š” ๊ทธ๋Ÿฐ ๊ฒƒ์ด ์—†๊ณ  if-else๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

/์ด๋‹ค

๋ชจ๋“  29 ๋Œ“๊ธ€

๋‚˜๋Š” ๋™์˜ํ•œ๋‹ค. ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋„ ์žˆ๋Š” ์ด์œ ๊ฐ€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

๋™์˜. JS๋ฅผ ํ‘œํ˜„ ์–ธ์–ด๋กœ ๋งŒ๋“ค์—ˆ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค. ํ›Œ๋ฅญํ•œ ๋ฌธ์žฅ/ํ‘œํ˜„์‹ ๋ถ„ํ• ์€ ?: ์— ๋™๊ธฐ๋ฅผ ๋ถ€์—ฌํ•˜์ง€๋งŒ Rust๋Š” ๊ทธ๋Ÿฐ ๊ฒƒ์ด ์—†๊ณ  if-else๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

/์ด๋‹ค

C/C++์—์„œ ?: ์—ฐ์‚ฐ์ž๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์ €๋Š” ๊ฐ„๊ฒฐํ•œ ๊ตฌ๋ฌธ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. ํ‘œํ˜„์‹์ด ๋„ˆ๋ฌด ๊ธธ์–ด์„œ ํ•œ ์ค„์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์—†์„ ๋•Œ ๋” ๋‚˜์€ ํ˜•์‹์„ ์ง€์ •ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

let x = some_very_long_condational
     ? if_true
     : if_false

let x = if some_very_long_condational 
     { if_true}
     else { if_false}

if_true ๋ฐ if_false ๊ฐ€ ํ•œ ์ค„์— ๋งž์ง€ ์•Š์œผ๋ฉด ๊ตฌ๋ฌธ์ด ๋” ๋‚˜๋น ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ค‘๊ด„ํ˜ธ๋ฅผ ์–ด๋””์— ๋ฐฐ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ƒฅ ๋‚ด 2 ์„ผํŠธ.

์ข‹์•„์š”:

let x = if some_very_long_condational { 
                 if_true
           } else { 
                 if_false
           }

์ถ”๊ฐ€ ํ–‰("else ํ–‰" ๋ฐ ๋งˆ์ง€๋ง‰ ๊ด„ํ˜ธ)์„ ์ถ”๊ฐ€ํ•˜์ง€๋งŒ ๊น”๋”ํ•˜๊ฒŒ ์œ ์ง€ํ•˜๊ณ  ์›ํ•˜๋Š” ๋งŒํผ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ €๋Š” C++์—์„œ ์‚ผํ•ญ์—ฐ์‚ฐ์ž๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š”๋ฐ ๋ฌธ๋ฒ•์ด ์ข‹์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๋ฐœ๊ฒฌํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๋ฐ : ๋‹ค๋ฅธ ํ† ํฐ์˜ ๋ฐ”๋‹ค ํ•œ๊ฐ€์šด๋ฐ์—์„œ ๊ทธ๊ฒƒ์ด ์กฐ๊ฑด๋ถ€์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ํ‘œํ˜„์„ ์‚ฌ์šฉํ•˜๋ฉด ๋…์ž์—๊ฒŒ "์—ฌ๊ธฐ์— ์กฐ๊ฑด์ด ์˜ต๋‹ˆ๋‹ค"๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์„ ํ–‰ ํ† ํฐ์ด ์žˆ๋Š” ๊ฒฝ์šฐ.

๊ธ€์Ž„, ๋‚˜๋Š” ์—ฌ์ „ํžˆ ?: ์—ฐ์‚ฐ์ž์˜ ๊ตฌ๋ฌธ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ if_true ๋ฐ if_false ๊ฐ€ ๋‹จ์ผ ํ‘œํ˜„์‹(ํ‘œํ˜„์‹์œผ๋กœ ๋๋‚˜๋Š” ์—ฌ๋Ÿฌ ๋ช…๋ น๋ฌธ์— ๋ฐ˜๋Œ€)์ธ ๊ฐ„๋‹จํ•œ ๊ฒฝ์šฐ์— ์„œ์‹ ์„ ํƒ์ด ๋„ˆ๋ฌด ์žฅํ™ฉํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ?: ์—ฐ์‚ฐ์ž๊ฐ€ ์ œ๊ฑฐ๋˜๋ฉด ๋‚˜๋Š” ๊ทธ๋‹ค์ง€ ๊ฐ•๋ ฅํ•˜๊ฒŒ ๋ฐ˜๋Œ€ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋˜ํ•œ ?: ์—ฌ๊ธฐ์ €๊ธฐ์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ, ์—ฌ์ „ํžˆ ๊ทธ๊ฒƒ์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€ ์ƒ๊ฐ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ์˜ ํ‘œํ˜„์‹ ๊ตฌ๋ฌธ์—์„œ ๋‘ ๊ฐœ์˜ (!) ASCII ๊ธฐํ˜ธ๋ฅผ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๋“ค๋กœ ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ๋†€๋ž๋„๋ก ๋น„๋ฐ€์Šค๋Ÿฌ์šด ์ผ๋“ค์„ ์ƒ๊ฐํ•ด ๋ณด์‹ญ์‹œ์˜ค.

์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ์‚ฌ์šฉ์€ ์ˆ ์–ด ์ด๋ฆ„์˜ ์ผ๋ถ€๋กœ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์˜ˆ: "is_empty()" ๋Œ€์‹  "empty?()".

@marijnh ++ :)

๊ฐœ์ธ์ ์œผ๋กœ ๋‚˜๋Š” ํ—›์†Œ๋ฆฌ๋ฅผํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Igor๋Š” https://mail.mozilla.org/pipermail/rust-dev/2010-November/000110.html ์—์„œ ์‚ผํ•ญ์„ ์ฃผ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ pull req #1705์—์„œ ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

    return parent.index_of(child_a) < offset_b ? -1 : 1

ํ›จ์”ฌ ๋” ์ข‹์•„ ๋ณด์ธ๋‹ค

    return if parent.index_of(child_a) < offset_b {
        -1 
    } else {
        1
    }

์šฐ๋ฆฌ๊ฐ€ ์ด๊ฒƒ์— ๋Œ€ํ•ด ๋น„๋‹จ๊ฒฐ์ ์ด์–ด์•ผํ•œ๋‹ค๋ฉด,

return -1 if parent.index_of(child_a) < offset_b else 1

ํ›จ์”ฌ ๋” ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์™œ ์ œ๊ฑฐํ•ด์•ผ ํ•˜๋Š”์ง€ ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค... ๋ชจ๋“  ์–ธ์–ด๋Š” ์•„๋‹ˆ์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ์–ธ์–ด์— ๊ทธ๋Ÿฌํ•œ ์ผ๋ฐ˜์ ์ธ ๊ด€ํ–‰(์‚ผํ•ญ ์—ฐ์‚ฐ์ž)์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ Rust ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋ฌด๊ฒ๊ณ  ์žฅํ™ฉํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋„๋ก ๊ฐ•์š”ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

์–ด์จŒ๋“ , ๋๋‚ฌ์ง€๋งŒ ๋” ๊น”๋”ํ•œ ์ฝ”๋“œ ์Šคํƒ€์ผ์„ ์ง€์›ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ œ ๋ชฉ์†Œ๋ฆฌ๋ฅผ ๋”ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋˜ํ•œ์ด ๊ตฌ๋ฌธ์ด ๊ทธ๋ฆฌ์›Œ

์ €๋Š” ์—ฌ๊ธฐ์— ์„ธ ๊ฐ€์ง€ ๊ณต๋ชจ ํšจ๊ณผ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰,

1) "ํ›Œ๋ฅญํ•œ ์ง„์ˆ /ํ‘œํ˜„ ๋ถ„ํ• "(@BrendanEich);
2) ๋ถ€์šธ ์ปจํ…์ŠคํŠธ์—์„œ ๋น„ ๋ถ€์šธ ๊ฐ•์ œ ๋ณ€ํ™˜
3) '๋™์ ' ์–ธ์–ด์กฐ์ฐจ๋„ ์š”์ฆ˜ ์ผ๋ฐ˜์ ์œผ๋กœ '๋™์  ๊ตฌ๋ฌธ'(์‹ค์ œ ๋งคํฌ๋กœ) ๋ฐ '๋™์  ์˜๋ฏธ๋ก '(์ผ๋ช… Python์˜ from __future__ import division )์„ ์–ป์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

(1)์€ if ... then ... else ... ๊ฐ€ ... ? ... : ... ์™€ ๊ทผ๋ณธ์ ์œผ๋กœ ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์™„์ „ํžˆ ํ•„์š” ์—†๋Š” ๊ตฌ๋ณ„์ž…๋‹ˆ๋‹ค. return ์™€ ๊ฐ™์€ ๊ทน๋‹จ์ ์ธ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์ง€๋งŒ ์ „์ฒด์ ์œผ๋กœ ๊ตฌ๋ถ„ํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค.

(2) ๋งŽ์€ ์–ธ์–ด์—์„œ ์ž„์˜์˜ ํ‘œํ˜„์‹์„ ํ…Œ์ŠคํŠธ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ฒซ ๋ฒˆ์งธ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋‘ ๋ฒˆ์งธ ์–ธ์–ด๋ฅผ ์‹œ์ž‘ํ•˜์ž๋งˆ์ž ์งœ์ฆ๋‚˜๋Š” ํ•œ ํŽธ๋ฆฌํ•˜๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค. ์— ์œ„์˜ ๋พฐ์กฑํ•œ OUT์œผ๋กœ ์ด ๋ ˆ๋”ง ํ† ๋ก  , ๋นˆ๋ฆฌ์ŠคํŠธ ์ค‘ ํ•˜๋‚˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š”ํ•ด์•ผํ•˜๋Š” ์ด์œ ๋Š” ๋ถ„๋ช…ํ•˜์ง€ ์•Š๋‹ค false ๋˜๋Š” true - ๊ทธ๋ƒฅ ์“ฐ๊ธฐ if ( d.length == 0 ) ... ๋‹น์‹ ์€ _so_ ํ›จ์”ฌ ์„ ๋ช…๋„๋ฅผ ์–ป์—ˆ๋‹ค!

(3)์€ ์–ธ์–ด ์œ„์›ํšŒ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ๋ฌด์—‡์ด๋“  ๊ณ ์ •๋˜์–ด ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ด๋ฉฐ, ๊ทธ๊ฒƒ์ด ๋ฌด์—‡์ด๋“  ๊ฐ„์— ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ๋ถ„๊ธฐํ•˜๊ฑฐ๋‚˜ ๋‹ค์‹œ ์ž‘์„ฑํ•˜์—ฌ ์ƒˆ ์ด๋ฆ„์„ ๋ถ€์—ฌํ•  ๋•Œ๊นŒ์ง€ ์–ธ์–ด๋Š” ๊ณ ์ •๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. use 'ternary conditions'; use 'empty lists are false'; ๋ฅผ ํ—ˆ์šฉํ•˜๋Š” ์–ธ์–ด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์ „๋ก€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ด๋Ÿฌํ•œ "ํŽธ์ฐจ ํ‘œ์‹œ"๋ฅผ ํ•ญ์ƒ ์—ผ๋‘์— ๋‘๊ณ  ํ”„๋กœ๊ทธ๋žจ์„ ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์—ฌ๋„ฃ์„ ๋•Œ ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์€ ๊ฒƒ์ด ์ด๋Ÿฌํ•œ ์œ ์—ฐ์„ฑ์— ๋ฐ˜๋Œ€ํ•ฉ๋‹ˆ๋‹ค. OTOH ๋‹จ์ˆœํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ์–ธ์–ด ๊ตฌ๋ฌธ๊ณผ ์˜๋ฏธ๋ฅผ ์‰ฝ๊ฒŒ ๋ณ€๊ฒฝํ•˜๊ณ  ์ด๋Ÿฌํ•œ ๊ด€ํ–‰์„ ์„ค์น˜ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“ˆ๋กœ ๋ฏธ๋ฆฌ ํŒจํ‚ค์ง•ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์–ธ์–ด์˜ ์ง„ํ™”์— ํฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@kevina ๋•Œ๋กœ๋Š”

@caitp : ์ •ํ™•ํžˆ ๋ฌด์—‡์ด ์ž˜๋ชป๋˜์—ˆ๋‚˜์š”?

return if parent.index_of(child_a) < offset_b { -1 } else { 1 }

๋˜๋Š” ๋‚ด๊ฐ€ ๊ฐœ์ธ์ ์œผ๋กœ ๊ฐ€์žฅ ์ข‹์•„ํ•˜๋Š” "ํ—ˆ๊น… ์กฐํ•ญ" ์ค‘ ํ•˜๋‚˜

return 
    if parent.index_of(child_a) < offset_b { -1 } 
    else                                   {  1 }

... ๋˜๋Š” ์ผ์น˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ์—ฌ๋Ÿฌ ์กฐ๊ฑด์ด ์žˆ๋Š” ๊ฒฝ์šฐ ...

return match parent.index_of(child_a) < offset_by {
  true  => -1,
  false => 1
}

... ๋ฌผ๋ก  ์žฌ์‚ฌ์šฉํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ๊ฒฝ์šฐ: ๊ทธ๋ƒฅ ํ•จ์ˆ˜๋กœ ์˜ฎ๊ธฐ์„ธ์š”...

return parent.is_child_before(offset_b)

์ €๊ฒƒ์„ ๋ณด์„ธ์š”... ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค... _๋ชจ๋“  ๊ฒƒ_์€ ํ‘œํ˜„์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋…น์Šฌ์ง€ ์•Š๊ณ  if {} else {} ๋Œ€์‹ 
() ? : , ์ถ”๊ฐ€ ์กฐ๊ฑด๋ฌธ์„ ์—ฐ๊ฒฐํ•˜๋ฉด if-as-an-expression์ด ํ›จ์”ฌ ๋” ๋ฉ‹์ง€๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค. (์ค‘์ฒฉ ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋Š” ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์ง€์ €๋ถ„ํ•ด์ง‘๋‹ˆ๋‹ค.)

์ œ ์ƒ๊ฐ์—๋Š” if-as-an-expression ์‚ฌ์šฉํ•  ๋•Œ ๋ถˆํ•„์š”ํ•œ ๊ณต๋ฐฑ์„ ๋„ˆ๋ฌด ๋งŽ์ด ์ฃผ์ž…ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋˜ํ•œ ๊ทธ๊ฒƒ์ด ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋ณด๋‹ค ๋” ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ฝํžŒ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๊ณ  ์ถ”๊ฐ€์ ์ธ ์žฅํ™ฉํ•จ์€ ๋‘ ์ ˆ์„ ์‹œ๊ฐ์ ์œผ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ ๋‚ด $0.02

๋‚ด๊ฐ€ ๋งํ•œ ๊ฒƒ์„ ๋‹น์‹ ์ด ์ž˜๋ชป ์ฝ์—ˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค (๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ์–ผ๋งˆ ์ „์˜ ๊ฒƒ์ž„์„ ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค)

๋‚˜๋Š” ๋‹จ์ง€ ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๊ฐ€ "๋ฌดํ•œํ•˜๊ฒŒ ๋” ๋‚˜์€" ๋ฐฉ์‹์œผ๋กœ ์–ด๋–ป๊ฒŒ ๋ณด์ด๋Š”์ง€ ์•Œ ์ˆ˜ ์—†๋‹ค๋Š” ์ ์„ ์ง€์ ํ•˜๊ณ  ์žˆ์„ ๋ฟ์ž…๋‹ˆ๋‹ค.
์ œ ์ƒ๊ฐ์—๋Š” ์ผ๋ฐ˜์ ์ธ ํ˜•ํƒœ๊ฐ€ ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์•„๋ฆ„๋‹ต์Šต๋‹ˆ๋‹ค.

์ฃผ์„์€ ๋•Œ๋•Œ๋กœ ์กฐ๊ฑด๋ฌธ๊ณผ ๋‹ฌ๋ฆฌ ํ‘œํ˜„์‹์œผ๋กœ์„œ์˜ ์กฐ๊ฑด๋ถ€๊ฐ€ ๋งค์šฐ ์œ ์šฉํ•˜๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ๊ปด์•ˆ๋Š” ์ค‘๊ด„ํ˜ธ๋ฅผ ๋–จ์–ด ๋œจ๋ฆฌ๋Š” ๊ฒƒ์€ ์ฃผ๊ด€์ ์ธ ๊ฐœ์„  ์ผ๋ฟ์ž…๋‹ˆ๋‹ค.

return parent.index_of(child_a) < offset_b ? -1 : 1

๋Œ€

return if parent.index_of(child_a) < offset_b { -1 } else { 1 }

@caitp ๋Š” ์—ฌ๊ธฐ์—์„œ ๋‘ ๋ฒˆ์งธ๊ฐ€ ์ฒซ ๋ฒˆ์งธ๋ณด๋‹ค ์ •๋ง ๋ฌดํ•œํžˆ ๋” ๋‚˜์ฉ๋‹ˆ๊นŒ? Rust์˜ if else๋Š” ์—ฌ์ „ํžˆ ํ‘œํ˜„์‹์ž…๋‹ˆ๋‹ค(๋ฌธ์ด ์•„๋‹˜).

๋‚ด ์ƒ๊ฐ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋‘ ๋ฒˆ์งธ๋Š” ๋‹ค๋ฅธ ์–ธ์–ด์— ๋Œ€ํ•œ ์ด๋ ฅ์ด ์—†๋Š” ์‚ฌ๋žŒ์ด ๋” ์ฝ๊ธฐ ์‰ฝ๊ณ 
  • ์šฐ๋ฆฌ๋Š” ๋ฏธ๋ž˜์˜ ์„คํƒ•(์•„๋งˆ๋„ Option ๋“ฑ๊ณผ ๊ด€๋ จ๋œ)์„ ์œ„ํ•ด ? ๊ตฌ๋ฌธ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@mitchmindtree ์™„์ „ํžˆ.

๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ๋‹น์‹ ์€ ๋Œ“๊ธ€์ด ๋งํ•œ ๊ฒƒ์„ ์˜คํ•ดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

return if parent.index_of(child_a) < offset_b { -1 } else { 1 } ๋Š” ์—ฌ์ „ํžˆ ์กฐ๊ฑด๋ถ€๋ฅผ ํ‘œํ˜„์‹์œผ๋กœ ํ‰๊ฐ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(๋”ฐ๋ผ์„œ return ๋Œ€ํ•œ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ๋  ์ˆ˜ ์žˆ์Œ).

์ค‘๊ด„ํ˜ธ๋Š” ๋ณด๊ธฐ ํ‰ํ•˜์ง€๋งŒ ์š”์ ์€ ์ค‘๊ด„ํ˜ธ๊ฐ€ ์•„๋‹ˆ๋ผ ์กฐ๊ฑด์‹์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. return foo.bar.baz(<conditional operand>) ๋Œ€ if (<conditional operand>) { return foo.bar.baz(1); } else { return foo.bar.baz(2); } ๋ฅผ ์“ธ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์ •๋ง๋กœ ๊นจ๋‹ฌ์•„์•ผ ํ•  ๊ฒƒ์€ ์ด ๋ฌธ์ œ๊ฐ€ 3๋…„์ด ๋„˜์—ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด 3๋…„ ๋™์•ˆ ์‚ผํ•ญ์‹์„ ๊ทธ๋ฆฌ ๋งŽ์ด ๊ทธ๋ฆฌ์›Œํ•˜์ง€ ์•Š์•˜๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•  ๋•Œ, ๋‚˜๋Š” ๊ทธ๋“ค์ด ์ œ๊ฑฐ๋œ ์ฑ„๋กœ ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@caitp ํ  ์•„์ง

๋…น์—์„œ ๋‹น์‹ ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

return foo.bar.baz(if cond { 42 } else { 0 })

? (๋‚˜๋Š” ๋‹น์‹ ์ด ์ค‘๊ด„ํ˜ธ btw์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜ผ๋ž€์„ ๋“œ๋ ค ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค :smile_cat: )

๋‹น์‹œ ToT์—์„œ๋Š” Rust์—์„œ ์ด๊ฒƒ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฐ•ํ•œ ์˜๊ฒฌ์ด ์—†์ง€๋งŒ ? ๋ฐ : ๊ฐ€ ๋‹ค๋ฅธ ์šฉ๋„๋กœ ๋” ์ž˜ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค๋ฉด ?? ์™€ ๊ฐ™์€ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ?: ๋Œ€์‹  cond ?? 43 ?: 0 ?

์ˆ˜์‹ญ ๋…„ ๋™์•ˆ ๊ฐœ๋ฐœ์ž๊ฐ€ ์‚ฌ์šฉํ•˜๋˜ ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋ฅด ์ƒ˜. 10์›” 24์ผ 2015 02:46, Kevin Atkinson ์•Œ๋ฆผ @github.com
์—ํฌ๋ฆฌํŠธ :

ํ™•๊ณ ํ•œ ์˜๊ฒฌ์€ ์—†์ง€๋งŒ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ์€ ? ๋ฐ : ์ˆ˜
๋‹ค๋ฅธ ๊ฐ์‚ฌ์— ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚ซ์Šต๋‹ˆ๋‹ค. ์™œ ๊ฐ™์€ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ ?? ๊ทธ๋ฆฌ๊ณ  ?:
๋Œ€์‹ ์—. ๊ทธ๋ž˜์„œ ์•„๋งˆ๋„ ์กฐ๊ฑด ?? 43?: 0.

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/rust-lang/rust/issues/1698#issuecomment -150728625.

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค @RenaudParis, ๋‚ด๊ฐ€ ๋ฌด์Šจ ๋ง์„ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์€์ด์—ˆ๋‹ค : ๋‚˜๋Š” ๊ฐ•ํ•œ ์˜๊ฒฌ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์ง€๋งŒ, ๋‚œ ๊ทธ๋ƒฅ ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ? ๋ฐ : ๋” ๋‚˜์€ ๋‹ค๋ฅธ ๊ฒƒ๋“ค, ์™œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ?? ๋ฐ ?: ์™€ ๊ฐ™์€ ๊ฒƒ์„ ๋Œ€์‹  ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค(์˜ˆ cond ?? 43 ?: 0 ?

์‚ผํ•ญ ์—ฐ์‚ฐ์ž๊ฐ€ ์ œ๊ฑฐ๋œ ์ด์œ  ์ค‘ ํ•˜๋‚˜๋Š” "?" ๋ฏธ๋ž˜์— ๋‹ค๋ฅธ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์ œ์•ˆ์€ ๋‹ค๋ฅธ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์—ˆ์Šต๋‹ˆ๋‹ค. cond ?? 43 ?: 0 ๋Š” ์—ฌ์ „ํžˆ if cond {43} else {0} ๋ณด๋‹ค ์งง์Šต๋‹ˆ๋‹ค.

์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ๋งž๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ๋‹จ์ผ ํ‘œํ˜„์‹์— ์ค‘๊ด„ํ˜ธ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๋ฉด ๊ทธ๋ ‡๊ฒŒ ๋‚˜์˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. (๊ทธ๋ฆฌ๊ณ  ๋„ค, ์ด๊ฒƒ์ด ํŒŒ์„œ์— ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๊ณ ํ†ต์„ ์ฃผ๋Š”์ง€ ์••๋‹ˆ๋‹ค. ๊ทธ๋งŒํ•œ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋…์„ฑ์ด ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.)

์˜ˆ

if i ==0 
     return i
else 
      1  

๋˜๋Š”

if i == 0  return i
    else 1  

์ด ํ˜•์‹์€

 if i == 0   ? return i
      : 1  

๋˜๋Š”

if i == 0   
      ? return i 
      : 1  

๊ตฌ์ ˆ

if i ==0 {
      return i
}
else {
    1
}      

๊ฝค ์ถ”ํ•œ / ๋„ˆ๋ฌด ์ผ๋ฐ˜์ ์ธ ๊ฒƒ์„ ์ฝ๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

์ด์ง‘ํŠธ ์ค‘๊ด„ํ˜ธ์— ๋Œ€ํ•œ ๊ฐœ๋ฐœ์ž ์ •์ฑ…์ด ์žˆ์œผ๋ฉด ๋” ๋‚˜๋น ์ง€์ง€๋งŒ ๋” ์ฝ๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

if i ==0
{
     return i
}
else
{
     1
 }      
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰