Rust: рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдирд┐рдХрд╛рд▓реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 29 рдЬрдире░ 2012  ┬╖  29рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: rust-lang/rust

рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЬреЛ 0.1 рдШреЛрд╖рдгрд╛ рдХреЗ рдмрд╛рдж рдореЗрд░реЗ рд╕рд╛рде рдЕрдЯрдХ рдЧрдИ рдереА, рдХреЛрдИ рдпрд╣ рдкреВрдЫ рд░рд╣рд╛ рдерд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдХреНрдпреЛрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ if рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реИред рдореБрдЭреЗ рдЗрд╕ рднрд╛рд╡рдирд╛ рд╕реЗ рд╕рд╣рд╛рдиреБрднреВрддрд┐ рд╣реИ

рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдореИрдВ рднрд╛рд╖рд╛ рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рддреЗрдЬреА рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рд╡рдзрд╛рди рдорд╣рд╕реВрд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рд╕реЛрдЪрддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдореЗрдВ рдЙрди рдЪреАрдЬреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рддрд░реНрдХ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рдирдХреА рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЬрдВрдЧ рдХреА рдШреЛрд╖рдгрд╛ рдкрд░ рдореВрд▓ рдЬрдирд╛рджреЗрд╢реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рдерд╛ (рдпрд╣ рднрд╛рд╖рд╛ рдореЗрдВ рдЕрдХреНрд╕рд░ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрди рд╣реИрдВ), рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рддрд░реНрдХ рджреЗрдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЙрд╕ рдкрд░ рд╕рдлрд▓ рд╣реБрдП рд╣реИрдВред

рдмреЗрд╢рдХ, рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдПрдХ рдХрдо-рд░рдЦрд░рдЦрд╛рд╡ рд╕реБрд╡рд┐рдзрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдирд┐рд╖реНрдХрд╛рд╕рди рднреА рдХрдо рдкреНрд░рднрд╛рд╡ рд╡рд╛рд▓рд╛ рд╣реИред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдорд╛рдирд╛ред рдХрд╛рд╢ рдореИрдВрдиреЗ JS рдХреЛ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рднрд╛рд╖рд╛ рдмрдирд╛ рджрд┐рдпрд╛ рд╣реЛрддрд╛ред рдорд╣рд╛рди рдХрдерди/рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╡рд┐рднрд╛рдЬрди рдкреНрд░реЗрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ?: рд▓реЗрдХрд┐рди рдЬрдВрдЧ рдЙрд╕ рд╕реЗ рдореБрдХреНрдд рд╣реИ, рдФрд░ рдпрджрд┐-рдФрд░ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред

/рд╣реЛрдирд╛

рд╕рднреА 29 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВред рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рднреА рдХреНрдпреЛрдВ рдерд╛ред

рдорд╛рдирд╛ред рдХрд╛рд╢ рдореИрдВрдиреЗ JS рдХреЛ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рднрд╛рд╖рд╛ рдмрдирд╛ рджрд┐рдпрд╛ рд╣реЛрддрд╛ред рдорд╣рд╛рди рдХрдерди/рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╡рд┐рднрд╛рдЬрди рдкреНрд░реЗрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ?: рд▓реЗрдХрд┐рди рдЬрдВрдЧ рдЙрд╕ рд╕реЗ рдореБрдХреНрдд рд╣реИ, рдФрд░ рдпрджрд┐-рдФрд░ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред

/рд╣реЛрдирд╛

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 рдПрдХ рд╣реА рд▓рд╛рдЗрди рдкрд░ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ, рддреЛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЦрд░рд╛рдм рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдХрд╣рд╛рдБ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреЗрд╡рд▓ рдореЗрд░реЗ рджреЛ рд╕реЗрдВрдЯреНрд╕ред

рдореИрдВ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ:

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

рдпрд╣ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЗрдиреЗрдВ ("рдЕрдиреНрдп рдкрдВрдХреНрддрд┐" рдФрд░ рдЕрдВрддрд┐рдо рдмреНрд░реИрдХреЗрдЯ) рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕реЗ рд╕рд╛рдл рд░рдЦрддрд╛ рд╣реИ рдФрд░ рдЖрдк рдЬрд┐рддрдирд╛ рдЪрд╛рд╣реЗрдВ рдЙрддрдирд╛ рдХреЛрдб рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВ рд╕реА ++ рдореЗрдВ рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЦрд░рд╛рдм рд╣реИред рдЖрдкрдХреЛ рд╕реНрдкреЙрдЯ рдХрд░рдирд╛ рд╣реИ? рдФрд░ : рдЕрдиреНрдп рдЯреЛрдХрди рдХреЗ рд╕рдореБрджреНрд░ рдХреЗ рдмреАрдЪ рдореЗрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдПрдХ рд╕рд╢рд░реНрдд рднреА рд╣реИред рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рд╛рде- рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╛рдардХ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдЕрдЧреНрд░рдгреА рдЯреЛрдХрди рд╣реИ "рдпрд╣рд╛рдВ рдПрдХ рд╕рд╢рд░реНрдд рдЖрддрд╛ рд╣реИ"ред

рд╡реИрд╕реЗ рдореИрдВ рдЕрднреА рднреА ?: рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдЖрдкрдХреА рдкрд╕рдВрдж рдХреА рдлрд╝реЙрд░реНрдореЗрдЯрд┐рдВрдЧ рдмрд╣реБрдд рд╡рд░реНрдмреЛрдЬрд╝ рд▓рдЧрддреА рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рд╛рдзрд╛рд░рдг рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЬрдм if_true рдФрд░ if_false рдПрдХ рдПрдХрд▓ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИрдВ (рдЬреИрд╕рд╛ рдХрд┐ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рдмрдпрд╛рдиреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд)ред

рдлрд┐рд░ рднреА, рдЕрдЧрд░ ?: рдСрдкрд░реЗрдЯрд░ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдореИрдВ рдмрд╣реБрдд рджреГрдврд╝рддрд╛ рд╕реЗ рд╡рд┐рд░реЛрдз рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред

рдореИрдВ рд╣рд░ рдЬрдЧрд╣ ?: рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╣рдЯрд╛рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реЛрдЧрд╛ - рдпрд╣ рд╣рдорд╛рд░реЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рджреЛ (!) ASCII рд╕рд┐рдЧрд┐рд▓ рдХреЛ рдореБрдХреНрдд рдХрд░рддрд╛ рд╣реИред рдЕрдиреНрдп рд╕рднреА рдЕрдЬреАрдмреЛрдЧрд░реАрдм рдЧреВрдврд╝ рдЪреАрдЬреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ рдЬреЛ рд╣рдо рдЙрдирдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддреЗ рдереЗред

рдПрдХ рдЧреИрд░-рдЧреБрдкреНрдд рдЙрдкрдпреЛрдЧ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рдзреЗрдп рдирд╛рдо рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрдЧрд╛ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП "is_empty ()" рдХреЗ рдмрдЬрд╛рдп "рдЦрд╛рд▓реА? ()"ред

@marijnh ++ :)

рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореИрдВ рд╣реВрдЯ рдирд╣реАрдВ рджреЗрддрд╛ред рдЗрдЧреЛрд░ рдиреЗ https://mail.mozilla.org/pipermail/rust-dev/2010-November/000110.html рдореЗрдВ рдЯрд░реНрдирд░реА рдмреИрдХ рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рджрд┐рдпрд╛

рдпрд╣ рдкреБрд▓ рдЕрдиреБрд░реЛрдз #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

рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ, рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ рдХрд┐ рдЗрд╕реЗ рдХреНрдпреЛрдВ рд╣рдЯрд╛рдирд╛ рдкрдбрд╝рд╛... рдХреГрдкрдпрд╛ рд░рд╕реНрдЯ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рднрд╛рд░реА/рд╡рд░реНрдмреЛрдЬрд╝ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рди рдХрд░реЗрдВ, рдЬрдм рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЕрднреНрдпрд╛рд╕ (рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░) рд╕рднреА рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдирд╣реАрдВ рддреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ рдореЗрдВ рдореМрдЬреВрдж рд╣реИред

рд╡реИрд╕реЗ рднреА, рдпрд╣ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд╕рд┐рд░реНрдл рдПрдХ рдХреНрд▓реАрдирд░ рдХреЛрдб рд╢реИрд▓реА рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдЖрд╡рд╛рдЬ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред

рдореБрдЭреЗ рдпрд╣ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рднреА рдпрд╛рдж рдЖрддреА рд╣реИ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдБ рдХрд╛рдо рдкрд░ рддреАрди рд╖рдбреНрдпрдВрддреНрд░рдХрд╛рд░реА рдкреНрд░рднрд╛рд╡ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд

1) "рдж рдЧреНрд░реЗрдЯ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ/рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рд╕реНрдкреНрд▓рд┐рдЯ" (@BrendanEich);
2) рдмреВрд▓рд┐рдпрди рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рдЧреИрд░-рдмреВрд▓рд┐рдпрди рдХрд╛ рдЬрдмрд░рджрд╕реНрддреА;
3) рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ 'рдбрд╛рдпрдиреЗрдорд┐рдХ' рднрд╛рд╖рд╛рдУрдВ рдХреЛ рднреА рдЗрди рджрд┐рдиреЛрдВ рдЖрдорддреМрд░ рдкрд░ 'рдбрд╛рдпрдиреЗрдорд┐рдХ рд╕рд┐рдВрдЯреИрдХреНрд╕' (рд░рд┐рдпрд▓ рдореИрдХреНрд░реЛрдЬрд╝) рдФрд░ 'рдбрд╛рдпрдиреЗрдорд┐рдХ рд╕реЗрдореЗрдиреНрдЯрд┐рдХреНрд╕' (рдП рд▓рд╛ рдкрд╛рдпрдерди рдХрд╛ from __future__ import division ) рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИред

(1) рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ if ... then ... else ... sth рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ ... ? ... : ... рд╕реЗ рдЕрд▓рдЧ рд╣реИ, рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдбрд┐рд╕реНрдкреЗрдВрд╕реЗрдмрд▓ рдЕрдВрддрд░ рд╣реИред return рдЬреИрд╕реЗ рдХрд┐рдирд╛рд░реЗ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ рднреЗрдж рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

(2) рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк рдХрдИ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд░реВрдк рдореЗрдВ рдордирдорд╛рдирд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; рдпрд╣ рдХреЗрд╡рд▓ рддрдм рддрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд▓рдЧрддрд╛ рд╣реИ рдЬрдм рддрдХ рдЖрдк рдЕрдкрдиреА рдкрд╣рд▓реА рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЬреИрд╕реЗ рд╣реА рдЖрдк рдЕрдкрдиреА рджреВрд╕рд░реА рднрд╛рд╖рд╛ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдкрд░реЗрд╢рд╛рди рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ reddit рдЪрд░реНрдЪрд╛ рдкрд░ рдКрдкрд░ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ false рдпрд╛ true рдХреНрдпреЛрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП - рдмрд╕ if ( d.length == 0 ) ... рд▓рд┐рдЦреЗрдВ рдФрд░ рдЖрдкрдиреЗ _so_ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХреА!

(3) рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк рднрд╛рд╖рд╛ рд╕рдорд┐рддрд┐ рдЖрдкрдХреЛ рдЬреЛ рдХреБрдЫ рднреА рджреЗрддреЗ рд╣реИрдВ, рдЙрд╕рдХреЗ рд╕рд╛рде рдлрдВрд╕ рдЧрдП рд╣реИрдВ, рдФрд░ рдЬреЛ рдХреБрдЫ рднреА рд╣реИ, рд╡рд╣ рднрд╛рд╖рд╛ рддрдм рддрдХ рдЕрдЯрдХреА рд░рд╣реЗрдЧреА рдЬрдм рддрдХ рдХрд┐ рдХреЛрдИ рд╕рд╛рде рдирд╣реАрдВ рдЖрддрд╛, рдХреЛрдбрдмреЗрд╕ рдХреЛ рдлреЛрд░реНрдХ рдпрд╛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХ рдирдпрд╛ рдирд╛рдо рджреЗрддрд╛ рд╣реИред рдпрд╣ рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ; рдРрд╕реА рднрд╛рд╖рд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдЬреЛ рдЕрдиреБрдорддрд┐ рджреЗрдВ, рдХрд╣реЗрдВ, use 'ternary conditions'; use 'empty lists are false'; ред рдЗрд╕рдХреЗ рд▓рд┐рдП рдорд┐рд╕рд╛рд▓реЗрдВ рд╣реИрдВред рдмреЗрд╢рдХ, рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рд▓рдЪреАрд▓реЗрдкрди рдХреЗ рдЦрд┐рд▓рд╛рдл рдмреЛрд▓рддреА рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рдЙрди "рд╡рд┐рдЪрд▓рди рдорд╛рд░реНрдХрд░реЛрдВ" рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХрд░рддреЗ рд╕рдордп рдЙрдиреНрд╣реЗрдВ рдХреЙрдкреА рдХрд░рдирд╛ рдпрд╛рдж рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдУрдЯреАрдУрдПрдЪ рдЕрдЧрд░ рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рднрд╛рд╖рд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдФрд░ рд╢рдмреНрджрд╛рд░реНрде рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдРрд╕реА рдкреНрд░рдерд╛рдУрдВ рдХреЛ рдЗрдВрд╕реНрдЯрд╛рд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкреНрд░реАрдкреИрдХреЗрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рднрд╛рд╖рд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдмрд╣реБрдд рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@ рдХреЗрд╡рд┐рдирд╛ рдХрднреА-рдХрднреА рд╡рд░реНрдмреЛрд╕рд┐рдЯреА рдХреЛрдИ рдмреБрд░реА рдЪреАрдЬ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдХреЛрдб рдХреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рд╛рдл рдХрд░рддреЗ рд╣реИрдВред

@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)

рдЗрд╕реЗ рджреЗрдЦреЗрдВ... рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ... рдХреНрдпреЛрдВрдХрд┐ _everything_ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИред

рдХрднреА рднреА рдЬрдВрдЧ рдореЗрдВ рдореИрдВ _рдЫрд╣ рдЕрдХреНрд╖рд░_ рдХреЛ рд╕рд╣реЗрдЬрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп 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 рдпрд╣рд╛рдБ рджреВрд╕рд░рд╛ рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╣рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрд╕реАрдо рд░реВрдк рд╕реЗ рдмрджрддрд░ рд╣реИ? рд░рд╕реНрдЯ рдХрд╛ рдЕрдЧрд░ рдФрд░ рдЕрднреА рднреА рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ (рдПрдХ рдмрдпрд╛рди рдирд╣реАрдВ)ред

рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ:

  • рджреВрд╕рд░рд╛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдкрдардиреАрдп рд╣реЛрдЧрд╛ рдФрд░
  • рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЪреАрдиреА (рд╢рд╛рдпрдж рд╡рд┐рдХрд▓реНрдк, рдЖрджрд┐ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд) рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рдЖрд╕реНрддреАрди рдХреЛ ? рд╕рд┐рдВрдЯреИрдХреНрд╕ рд░рдЦрдиреЗ рд╕реЗ рд╢рд╛рдпрдж рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛

@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); } рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рддреАрди рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рдкреБрд░рд╛рдирд╛ рд╣реИред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд▓реЛрдЧреЛрдВ рдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддреАрди рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдЯрд░реНрдирд░реА рдХреЛ рдЗрддрдирд╛ рдпрд╛рдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╣рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рдХрд┐ рд╡реЗ рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗред

@caitp рд╣рдореНрдо рдореБрдЭреЗ рдЕрднреА рднреА рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдиреБрд╕рд░рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдХреНрдпрд╛ рдЖрдк рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЬрдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдпрд╛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕рд┐рд░реНрдл рдмрдпрд╛рди рдмрдирд╛рдо рднрд╛рд╡?

рдЬрдВрдЧ рдореЗрдВ рдЖрдк рдЕрднреА рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

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

? (рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рдереЗ, рднреНрд░рдо рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ: рдореБрд╕реНрдХрд╛рди_рдХреИрдЯ:)

рдЙрд╕ рд╕рдордп, ToT рдореЗрдВ, Rust рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдерд╛ред

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдордЬрдмреВрдд рд░рд╛рдп рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрджрд┐ ? рдФрд░ : рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ ?? рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рди рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп ?: , рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП cond ?? 43 ?: 0 ?

рджрд░реНрдЬрдиреЛрдВ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдХреНрдпреЛрдВ рдмрджрд▓реЗрдВ?

рд▓реЗ рд╕реИрдоред 24 рдЕрдХреНрдЯреВрдмрд░ 2015 02:46, рдХреЗрд╡рд┐рди рдПрдЯрдХрд┐рдВрд╕рди рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com a
рдЗрдХреНрд░рд┐рдЯ:

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдордЬрдмреВрдд рд░рд╛рдп рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдмрд╕ рдЗрддрдирд╛ рд╣реА рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ? рдФрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдЕрдиреНрдп рдзрдиреНрдпрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рди рдХрд░реЗрдВ ?? рддрдерд╛ ?:
рдмрдЬрд╛рдпред рддреЛ рд╢рд╛рдпрдж рдХрдВрдбреАрд╢рди ?? 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 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

eddyb picture eddyb  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

cuviper picture cuviper  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

lambda-fairy picture lambda-fairy  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mcarton picture mcarton  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dwrensha picture dwrensha  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ