рдбреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ - рдЬрд╛рд░реА рд░рдЦреА

рд╕рднреА рдХреЛ рд╢реБрдн рджрд┐рди!
рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдЕрджреНрднреБрдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдбреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╣рд╛рдиреА рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рдореЗрд░рд╛ рдЕрдВрддрд┐рдо рд▓реЗрдЦ рдмрд╣реБ-рдкреНрд░рддрд┐рдорд╛рди рднрд╛рд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдерд╛, рдХрд┐ рдпрд╣ рдЖрдЬ рдХреА рд▓реЛрдХрдкреНрд░рд┐рдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╢реИрд▓рд┐рдпреЛрдВ рдореЗрдВ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдФрд░ рд╕рд╛рдордВрдЬрд╕реНрдпрдкреВрд░реНрдг рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рдмрд╛рд░ рдореИрдВрдиреЗ рднрд╛рд╖рд╛ рдХреЗ рджреВрд╕рд░реЗ рдкрдХреНрд╖ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ - рдХрдо рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рдореМрд▓рд┐рдХ, рд▓реЗрдХрд┐рди рдХреЛрдИ рдХрдо рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВред рдЕрд░реНрдерд╛рддреН, рдореЗрдЯрд╛рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдФрд░ рд╕рдВрдХрд▓рди-рд╕рдордп рдХреА рдЧрдгрдирд╛ рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдПрдВред


рдореИрдВ рд╢реБрд░реВ рдХрд░реВрдБрдЧрд╛, рд╢рд╛рдпрдж, рд╕рднреА рд╕рд╛рдорд╛рдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рд╕рд╛рде - рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ (рдЬреЗрдирд░рд┐рдХ, рдЯреЗрдореНрдкреНрд▓реЗрдЯ)ред рдпрд╣реА рд╣реИ, C ++ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ рд╣рдо рд╕рднреА рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВред

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

 T[] MapInc(T)(T[] arr) { auto res = new T[arr.length]; foreach(i, v; arr) res[i] = v + 1; return res; } 


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рд░рд┐рдЯрд░реНрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рднреА рдорд╛рдирдХреАрдХреГрдд рд╣реИред рдмрд╣реБрдд рдЖрд░рд╛рдорджрд╛рдпрдХ рд╕рдВрдкрддреНрддрд┐ред
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

 void main() { auto ar = [1,2,3,4]; auto ard = [1.0,2.0,3.0,4.0]; assert(MapInc(ar) == [2,3,4,5], "wrong!"); assert(MapInc(ard) == [2.0,3.0,4.0,5.0], "wrong!"); } 


рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдкрд╛рд╕ рд╣реБрдП! рдирд┐рд╢реНрдЪрд┐рдд, рд╕рдлрд▓рддрд╛ред рд▓реЗрдХрд┐рди рд░реБрдХрд┐рдП ... рдЖрдЗрдП рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ рдпрд╣ рдХреЛрдб:

 auto ar = ["1","2","3","4"]; MapInc(ar); 


рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ? рдХреЛрдИ рдЖрд╢реНрдЪрд░реНрдп рдирд╣реАрдВред рд▓рд╛рдЗрди рдкрд░ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐
 res[i] = v + 1; 

рдФрд░, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд▓рд╛рдЗрди рдкрд░
 MapInc(ar); 

рдЕрдм рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдЧрд╣рд░реЗ рджрдлрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рд╕рд╣реА рд╣реИ?
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЧрд▓рддрдлрд╣рдореА рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреА рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдХреЛрдб рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рдПрдХ рд╣рдЬрд╛рд░ рд╢рдмреНрджреЛрдВ рдХреЛ рдмрджрд▓ рджреЗрдЧреА, рдмрд╕ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:

 T[] MapInc(T)(T[] arr) if(is(typeof(arr[0] + 1) == typeof(arr[0]))) //   . { auto res = new T[arr.length]; foreach(i, v; arr) res[i] = v + 1; return res; } 


рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдордиреЗ рдмрд╕ рдФрд░ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдврдВрдЧ рд╕реЗ рд╕рдВрдХрд▓рдХ рдХреЛ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХрд┐рд╕ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИ, рдФрд░ рдпрджрд┐ рд╡рд╣ рдХреЛрдб рдкрд╛рддрд╛ рд╣реИ рдЬреЛ рдКрдкрд░ рджреЛ рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдПрдХ рдФрд░ рд╕реАрдзреЗ, рд╡рд╣ рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдЧрд╛ рдФрд░ рдореМрдХреЗ рдкрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред рдФрд░, рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИ!
рдмреЗрд╢рдХ, рдореБрдлреНрдд рдХреЗ рд▓рд┐рдП, рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рднреА рдЬрд╛рдВрдЪ рд╕рдВрдХрд▓рди рдЪрд░рдг рдореЗрдВ рд╣реЛрддреА рд╣реИ, рдмрд┐рдирд╛ рд░рдирдЯрд╛рдЗрдо рдХреЗ рдХрд┐рд╕реА рднреА рдХреАрдорддреА рд░рдгрдиреАрддрд┐ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд┐рдирд╛ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рдХреЗрд╡рд▓ рдЙрди рдЪреЗрдХреЛрдВ рдХреЛ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреА рдЧрдгрдирд╛ рд╕рдВрдХрд▓рди рдЪрд░рдг рдореЗрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред
рдЕрдм рд╡рд╛рдкрд╕ рдХреЛрдб рдХреЗ рд▓рд┐рдП:
 if(is(typeof(arr[0] + 1) == typeof(arr[0]))) 

рдЖрдкрдХреЛ рд╢рд╛рдпрдж рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╢рд░реНрдорд┐рдВрджрдЧреА рд╣реИред рд╕рдВрдХрд▓рди рдЪрд░рдг рдкрд░ рдЧрд┐рд░рдлреНрддрд╛рд░реА [0] рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ + 1 рдХреА рдЧрдгрдирд╛ рдХреИрд╕реЗ рдХрд░реЗрдВ? рд╕рд╣реА рдЙрддреНрддрд░ рдХреБрдЫ рдирд╣реАрдВ рд╣реИред рд╕рдВрдХрд▓рдХ рдЗрд╕ рдорд╛рди рдХреА рдЧрдгрдирд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЯрд╛рдЗрдкреЛрдлрд╝ рд╕реНрд╡рдпрдВ рдХреЗ рддрд░реНрдХ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдореВрд▓реНрдп рдХреЛ рд╕рдВрдХреНрд░рдорд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рддрд░рд╣ рд╕реЗ
 typeof(arr[0] + 1) == typeof(arr[0]) 

рдХреЗрд╡рд▓ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐:
a) рд╣рдо рдЯрд╛рдЗрдкреЛрдл (1) рдорд╛рди рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЯрд╛рдЗрдкреЛрдл (рдЧрд┐рд░рдлреНрддрд╛рд░ [0]) рдкреНрд░рдХрд╛рд░ рдорд╛рди рдФрд░
рдмреА) рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдлрд┐рд░ рд╕реЗ рдЯрд╛рдЗрдк рдЯрд╛рдЗрдк (рдЧрд┐рд░рдлреНрддрд╛рд░реА [0]) рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред
рдорд╣рд╛рди, рд╣реИ рдирд╛?

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

 T[] MapInc(T)(T[] arr, T b) if(is(typeof(arr[0] + b) == typeof(arr[0]))) { auto res = new T[arr.length]; foreach(i, v; arr) res[i] = v + b; return res; } 


рдЕрдм рд╣рдо рдПрдХ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдПрдХ рдордирдорд╛рдиреА рд╕рдВрдЦреНрдпрд╛ рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рд╕рдорд╛рд░реЛрд╣ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:

 void main() { auto ar = [1,2,3,4]; assert(MapInc(ar,3) == [4,5,6,7], "wrong!"); } 
void main() { auto ar = [1,2,3,4]; assert(MapInc(ar,3) == [4,5,6,7], "wrong!"); }

рд╕рдлрд▓рддрд╛! рд▓реЗрдХрд┐рди рд░реБрдХрд┐рдП, рд╣рдордиреЗ рдЙрд╕рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдзреАрд░рдЬ рд╕реЗ рдкреЗрд╢ рдЖрдпрд╛, рдХреБрдЫ рд╣рдж рддрдХ рдХрд╛рдо рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА:

 void main() { auto ar = [1.0,2.0,3.0,4.0]; assert(MapInc(ar,1) == [2.0,3.0,4.0,5.0], "wrong!"); // ,  . } 


рдКрдкреНрд╕! рд╕рдВрдХрд▓рдХ рд╣рдорд╛рд░реЗ рд░рдордгреАрдп рдбрд┐рдЬрд╛рдЗрди рдХреЛ рдирд╣реАрдВ рд╕рдордЭ рд╕рдХреЗред рдпрд╣ рдХреНрдпрд╛ рд╣реИ: рдПрдХ рдФрд░ рдХреНрд░реЛрдзреА рд╕рдЦреНрдд рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рдгрд╛рд▓реА рд╣рдореЗрдВ рдиреБрдХрд╕рд╛рди рдХреА рдХрд╛рдордирд╛ рдХрд░рддреА рд╣реИ? рд▓реЗрдХрд┐рди рдЪрд▓реЛ рдПрдХ рдХрд░реАрдм рджреЗрдЦреЛ: рд╣рдо рдЦреБрдж рдХреЛ рджреЛрд╖реА рдорд╛рдирддреЗ рд╣реИрдВ! рдкрд░рд┐рднрд╛рд╖рд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рд╕рд░рдгреА рдФрд░ рд╕рдВрдЦреНрдпрд╛ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреА рд╣реИрдВред рд╕рдм рдареАрдХ рд╣реИред рдЖрдЗрдП рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

 T[] MapInc(T,P)(T[] arr, P b) if(is(typeof(arr[0] + b) == T)) { auto res = new T[arr.length]; foreach(i, v; arr) res[i] = v + b; return res; } 


рдЕрдм рдЕрдВрддрд┐рдо рд╕рдлрд▓рддрд╛ рдЕрдм рд╣реИ:

 void main() { auto ar = [1.0,2.0,3.0,4.0]; assert(MapInc(ar,1) == [2.0,3.0,4.0,5.0], "wrong!"); // , ! } 


рдореИрдВ рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рд╣реЗрдбрд░ рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рдирд╛ рдирд╣реАрдВ рдерд╛ - рд╣рдо рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рдорд╛рди рд╣реА рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдЕрдм рдХрдареЛрд░рддрд╛ рдХреЗ рдкреНрд░реЗрдорд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХрд╛ рд╕рдордп рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рд╡рд┐рдХрд▓реНрдк:
 MapInc(ar,1); 

рдмрд╕ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд┐рд╖реНрдХрд░реНрд╖ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИред рдФрд░ рдпрд╣рд╛рдБ рд╣реИ рдХрд┐ рдЪреАрдЬреЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреИрд╕реА рд╣реИрдВ:

рдбреА рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рддрд░реНрдХ рдХреЗ рджреЛ рд╕реЗрдЯ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
 T f(c1,c2/*, others*/)(r1,r2/*, others*/); 

рдкрд╣рд▓рд╛ рд╕реЗрдЯ рд╕рдВрдХрд▓рди рд╕рдордп рддрд░реНрдХ рд╕реЗрдЯ рд╣реИ, рджреВрд╕рд░рд╛ рд░рди рдЯрд╛рдЗрдо рддрд░реНрдХ рд╣реИред
рдирд╛рдо рдЦреБрдж рдХреЗ рд▓рд┐рдП рдмреЛрд▓рддрд╛ рд╣реИ: рдкрд╣рд▓реЗ рд╕реЗрдЯ рд╕реЗ рддрд░реНрдХ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░, рджреВрд╕рд░реЗ рд╕реЗрдЯ рд╕реЗ, рд░рди рдЯрд╛рдЗрдо рдкрд░ рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдФрд░ рд╣рдореЗрд╢рд╛ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рдВрдХрд▓рди рд╕рдордп рдХреЗ рд╕рднреА рддрд░реНрдХ рд╣рдореЗрдВ рдлрд┐рд░ рд╕реЗ "рдореБрдлреНрдд рдореЗрдВ" рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╕реЗ рд╣рдо рдЙрди рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕рдВрдХрд▓рди рдХреЗ рджреМрд░рд╛рди рдЧрдгрдирд╛ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИрдВред

рдмрд╣реБрд░реВрдкрд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:
 auto v = f!(c1,c2/*, others*/)(r1,r2/*, others*/); 

рдЙрд╕реА рд╕рдордп, рдпрджрд┐ рд╕рдВрдХрд▓рди рд╕рдордп рддрд░реНрдХ рдХреЗрд╡рд▓ рдПрдХ рд╣реИ, рддреЛ рдЖрдк рдХреЛрд╖реНрдардХ рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:
 auto v = f!c1(r1,r2/*, others*/); 


рд╕рдВрдХрд▓рди рдХреЗ рд╕рдордп рдХреЗ рддрд░реНрдХ рди рдХреЗрд╡рд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рд╕рдВрдХрд▓рди рдЪрд░рдг рдореЗрдВ рдХрд┐рд╕реА рднреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "42"ред
рд▓реЗрдХрд┐рди 42 рд╕реА + + рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдореЗрдВ рдлрд┐рдЯ рд╣реЛрдЧрд╛, рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ: рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдРрд╕реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ! рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

 P[] Map(alias f,T,P)(T[] arr) if(is(typeof(f(arr[0])) == P)) { auto res = new P[arr.length]; foreach(i, v; arr) res[i] = f(v); return res; } void main() { auto ard = [1.0,2.0,3.0,4.0]; auto ar = [1,2,3,4]; assert(Map!((double x) {return x+1;},double,double)(ard) == [2.0,3.0,4.0,5.0], "wrong!"); assert(Map!((int x) {return x+1.0;},int,double)(ar) == [2.0,3.0,4.0,5.0], "wrong!"); assert(Map!((int x) {return x+1;},int,int)(ar) == [2,3,4,5], "wrong!"); assert(Map!((double x) {return x+1.0;},int,double)(ar) == [2.0,3.0,4.0,5.0], "wrong!"); } 


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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕рд┐рджреНрдз рд╕реЙрд░реНрдЯ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ C ++ 11 STL рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВред

 auto arr = {1,2,3,4}; sort(arr.begin(), arr.end(), [&](int a, int b) {return a > b && a < 42;}); 


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

рд▓реЗрдЦ рдкрд╣рд▓реЗ рд╣реА рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЕрднреА рд╢реБрд░реБрдЖрдд рдХреА рд╣реИ!

рддреЛ, рд╕рдВрдХрд▓рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЧрдгрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЬрд╛рд░реА рд░рдЦреЗрдВред

рд╣рдо рд╕рднреА рдХреЛ рдпрд╛рдж рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдиреБрдЪрд┐рдд рдФрд░ рдкрд╛рдк, рдЬреИрд╕реЗ рднрд╛рд╡реЛрдВ рдХреЗ рд╕рд╛рде
 #ifdef P ... #else ... #endif 


рдбреА рдореЗрдВ рдХреЛрдИ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдирд╣реАрдВ рд╣реИ (рдХреЛрдИ рдХрд╣реЗрдЧрд╛: "рднрдЧрд╡рд╛рди рдХрд╛ рд╢реБрдХреНрд░ рд╣реИ," рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдШреБрд░рдШреБрд░ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рд╣рдо рд╣реЛрд▓реАрд╡рд░ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдкрдврд╝рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗ)ред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рднрд╛рд╖рд╛ рдореЗрдВ рдРрд╕реЗ рдирд┐рд░реНрдорд╛рдг рд╣реИрдВ рдЬреЛ рдЗрд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрд░реНрдпреБрдХреНрдд рдирд┐рд░реНрдорд╛рдг рд╕реНрдЯреЗрдЯрд┐рдХ рдХреЛ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ рдмрджрд▓ рджреЗрдЧрд╛ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдордиреЗ рдЙрд╕рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд┐рдпрд╛ (рдореЗрд░рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░реЛ, рдареАрдХ рд╣реИ, рд╕реЛрдУрдЙрдУ) рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ: рд╕реНрдерд┐рд░ рдпрджрд┐ рдмрд╣реБрдд рдХреБрдЫ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдПрдХ рд╡рд┐рд╖рдпрд╛рдВрддрд░ рдЪрд╛рд╣рд┐рдПред D рдХрд╛ рдХреАрд╡рд░реНрдб рдЙрдкрдирд╛рдо рд╣реИред рдпрд╣ рдмрд╣реБрдд рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рд╣рдореЗрдВ рдЗрд╕реЗ рдПрдХ рдЯрд╛рдЗрдлрд╛рдЗрдб рдХреА рдЬрд░реВрд░рдд рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
 alias int MyOwnPersonalInt; 

рдЗрддрдирд╛ рд╕реНрдерд┐рд░ рдЕрдЧрд░ред рдореИрдВ рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рджрд┐рдЦрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛:
 enum Arch {x86, x64}; static Arch arch = x86; static if(arch == x86) alias int integer; else alias long integer; 


рд╣рдордиреЗ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХрд╛ рдЖрдХрд╛рд░ рдЙрд╕ рдорд╢реАрди рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЕрдм рд╣рдо рдЗрд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреА рддрд░рд╣ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 integer Inc(integer n) {return n+2;} 


рд╕реНрдереИрддрд┐рдХ рдЕрдЧрд░ рдХрд╣реАрдВ рднреА рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рд╡реИрд╢реНрд╡рд┐рдХ рдХреЛрдб рдореЗрдВ, рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ, рдФрд░ рдХрдХреНрд╖рд╛ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рднреА!
рдпрд╣рд╛рдВ рд╣рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреЛрдИ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ "рд╕реНрдерд┐рд░ рдФрд░" рдирд╣реАрдВ рд╣реИ! рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЯрдХрд░рд╛рд╡ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдШреЛрдВрд╕рд▓реЗ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдФрд░ рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ, рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рдЙрдкрдпреЛрдЧреА рд╡рд┐рд╢реЗрд╖рддрд╛ред рднрд╛рд╖рд╛ рдХреА рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ: рд╕рдВрдХрд▓рд┐рдд рд╕рдордп рдкрд░ рдЧрдгрдирд╛ рдХрд░реЗрдВ рд╡рд╣ рд╕рдм рдХреБрдЫ рдЬрд┐рд╕рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

 static int a = f(); //   enum int b = f(); 


рднрд╛рд╖рд╛ рдорд╛рдирддреА рд╣реИ рдХрд┐ рд╕рдВрдХрд▓рдХ рдПрдХ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдЪ () рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рддреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ, рдЕрдиреНрдпрдерд╛ рдореВрд▓реНрдп рдХреЛ рдХреЛрдб рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдбреА рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЕрднреНрдпрд╛рд╕ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рд╣реИ рдЬреЛ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдЧрдгрдирд╛ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред
рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ: C / C ++ рд╕реНрдЯреЗрдЯрд┐рдХ рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ рддрдм рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рд╢реБрд░реБрдЖрддреА рдХреЛрдб рдХреЛ рдкрд╣рд▓реА рдмрд╛рд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрдВрдкреНрд▓рд╛рдпрдВрд╕ рдХреЗ рджреМрд░рд╛рди рдФрд░, рддрджрдиреБрд╕рд╛рд░, рдХрдВрдкрд╛рдЗрд▓ рдЯрд╛рдЗрдо рдкрд░ рдХреИрд▓рдХреБрд▓реЗрдЯ рдХрд┐рдП рдЧрдП рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдХреЛ рдПрдХреНрд╕рдкреНрд░рд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

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

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдХрд╛рдо рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рд▓реЗрдЦ рд▓реЛрдЧреЛрдВ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдбреА рдореЗрдВ рд░реБрдЪрд┐ рд▓реЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред
рдЬреЛ рд▓реЛрдЧ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ - рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЗрд╕рдХрд╛ рдЖрдирдВрдж рд▓рд┐рдпрд╛ рдФрд░ рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

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

Source: https://habr.com/ru/post/In135248/


All Articles