рдкреНрд░рджрд░реНрд╢рдирдХрд╛рд░реА рдЧрд▓рдд рд╣реИрдВ

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

рд╢реМрдХреАрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдХреАрд░реНрдг рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛ рдФрд░ рд╡рд┐рдХрд╛рд╕

рдмрдВрдж рдХрд░реЛред рдЕрдкрдиреЗ рдИрдореЗрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдмрдВрдж рдХрд░реЗрдВ, рдЬрд╣рд╛рдВ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдореБрдЭреЗ рдПрдХ рдкрддреНрд░ рд▓рд┐рдЦрд╛ рдерд╛ рдЬрд┐рд╕рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ "рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдЗрдВрдЬреАрдирд┐рдпрд░ Google рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ", рдХрд┐ "рдЙрдирдХреЗ рдбрд┐рдЬрд╛рдЗрди, рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╢реМрдХреАрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рдмрдирд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред" рдореИрдВ рдпрд╣ рдирд╣реАрдВ рд╕реБрдирдирд╛ рдЪрд╛рд╣рддрд╛ред

рдЖрдЗрдП рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЪрд░реНрдЪрд╛ рди рдХрд░реЗрдВред рдкреВрд░реНрдг рдкреНрд░рдХрдЯреАрдХрд░рдг: рдореИрдВ Google рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рдерд╛ред рдпрд╣ рдкрд╣рд▓реА (рд▓реЗрдХрд┐рди рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдЕрдВрддрд┐рдо рдирд╣реАрдВ) рдЬрдЧрд╣ рдереА рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдХрднреА рдкреНрд░реЛрдЯреЛрдмрд░реНрдлрд░реНрд╕ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдерд╛ред Google рдХреЛрдбрдмреЗрд╕ рдореЗрдВ рдореМрдЬреВрдж рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ; рдпрд╣ рд╕рд┐рд░реНрдл "рдкреНрд░реЛрдЯреЛрдмрдлрд╝рд░реНрд╕ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ" рдФрд░ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИред

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

рд╢реМрдХреАрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдХреАрд░реНрдг рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛ рдФрд░ рд╡рд┐рдХрд╛рд╕ рд╣рд╛рде рд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдУрдВ рдХреЛ рдЕрдВрддрд┐рдо рдХреНрд╖рдг рдореЗрдВ рдмреЛрд▓реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдФрд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдВрддрд┐рдо рдХреНрд╖рдг рдореЗрдВ рдмреЛрд▓реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХреБрдЫ рдкреНрд░рддрд┐рдмрдВрдз рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╕рд┐рд░ рдХреЛ рдЦрд░реЛрдВрдЪрдиреЗ рдФрд░ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░реЗрдВрдЧреЗ: "рд╡реНрд╣рд╛рдЯ рдж рд╣реЗрд▓?" рд▓реЗрдХрд┐рди рдпреЗ рдПрдХ рдЧрд╣рд░реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рдХреНрд╖рдг рд╣реИрдВ:

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдкреНрд░реЛрдЯреЛрдмрдлрд╝рд░реНрд╕ рд╢реМрдХреАрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬреНрдЮрд╛рдд рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣рд▓ рдХреА рдЧрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЦрд░рд╛рдм рд╕рдорд╛рдзрд╛рди рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВред

рд░рдЪрдирд╛ рдХрд╛ рдЕрднрд╛рд╡


рдкреНрд░реЛрдЯреЛрдмрдлрд╝рд░ рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдСрд░реНрдереЛрдЧреЛрдирд▓ рдХреА рд╕реВрдЪреА рджреЗрдЦреЗрдВ, рд▓реЗрдХрд┐рди рдЙрд╕реА рд╕рдордп рд╕реАрдорд┐рдд рдЯрд╛рдЗрдкрд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЬреЛ рдореБрдЭреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдорд┐рд▓реЗред

  • oneof рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЛ repeated рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ред
  • рдлрд╝реАрд▓реНрдб map<k,v> рдореЗрдВ рдХреБрдВрдЬрд┐рдпреЛрдВ рдФрд░ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рд╣рд╛рд▓рд╛рдБрдХрд┐ map рдлрд╝реАрд▓реНрдбреЛрдВ рдХреЛ рдкрд░рд┐рдорд╛рдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдлрд┐рд░ рднреА рдХрд┐рд╕реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк рд╕рд╛рдорд╛рдиреНрдп рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдореЗрдВ рдЕрдкрдиреА рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдлрдВрд╕ рдЧрдП рд╣реИрдВред
  • map рдлрд╝реАрд▓реНрдб рдХреЛ repeated рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ред
  • map рдХреАрдЬрд╝ string рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди bytes рдирд╣реАрдВ ред рдПрдирдо рдХреЛ рднреА рдордирд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдмрд╛рдж рд╡рд╛рд▓реЗ рдХреЛ рдкреНрд░реЛрдЯреЛрдмрдлрд░реНрд╕ тАЛтАЛрд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЕрдиреНрдп рд╕рднреА рднрд╛рдЧреЛрдВ рдореЗрдВ рдкреВрд░реНрдгрд╛рдВрдХ рдХреЗ рдмрд░рд╛рдмрд░ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
  • map рдорд╛рди рдЕрдиреНрдп map рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

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

map рдлрд╝реАрд▓реНрдбреНрд╕ рдХрд╛ рдкреНрд░рддрд┐рдмрдВрдз, рдЬрд┐рд╕реЗ repeated рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓рдЧрднрдЧ рдПрдХ рд╣реА рдУрдкреЗрд░рд╛ рд╕реЗ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рдХрд╛рд░ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рддрд┐рдмрдВрдз рджрд┐рдЦрд╛рддрд╛ рд╣реИред рджреГрд╢реНрдпреЛрдВ рдХреЗ рдкреАрдЫреЗ, map<k,v> repeated Pair<k,v> рд╕рдорд╛рди рдХреБрдЫ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдЪреВрдВрдХрд┐ repeated рднрд╛рд╖рд╛ рдХрд╛ рдЬрд╛рджреБрдИ рдХреАрд╡рд░реНрдб рд╣реЛрддрд╛ рд╣реИ, рди рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рдХрд╛, рдпрд╣ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ред

рдПрдирдо рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХрд╛ рдЕрдиреБрдорд╛рди рдЙрддрдирд╛ рд╣реА рд╕рд╣реА рд╣реИ рдЬрд┐рддрдирд╛ рдореЗрд░рд╛ред

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

рд╕рдорд╛рдзрд╛рди рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

  • required рд╕рдВрджреЗрд╢ рдореЗрдВ рд╕рднреА рдлрд╝реАрд▓реНрдб рдмрдирд╛рдПрдВред рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджреЗрд╢ рдХреЛ рдПрдХ рдЙрддреНрдкрд╛рдж рдкреНрд░рдХрд╛рд░ рдмрдирд╛рддрд╛ рд╣реИред
  • рд╕реНрдЯреИрдВрдб-рдЕрд▓реЛрди рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП oneof рдлрд╝реАрд▓реНрдб рдХрд╛ рдорд╛рди рдмрдврд╝рд╛рдПрдБред рдпрд╣ рдПрдХ рдХреЙрдкреАрдкреНрд░реЛрдбрдХреНрдЯ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧрд╛ред
  • рдЙрддреНрдкрд╛рджреЛрдВ рдФрд░ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╣-рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рд╡рд╣ рд╕рдм рд╣реИ! рдпреЗ рддреАрди рдкрд░рд┐рд╡рд░реНрддрди рдЖрдк рд╕рднреА рдХреЛ рдХрд┐рд╕реА рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдбреЗрдЯрд╛ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рд╕рд░рд▓ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рде, рдЖрдк рдЕрдиреНрдп рд╕рднреА рдкреНрд░реЛрдЯреЛрдмреЙрдлрд╝рд░ рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк optional рдлрд╝реАрд▓реНрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 product Unit { // no fields } coproduct Optional<t> { t value = 0; Unit unset = 1; } 

repeated рдлрд╝реАрд▓реНрдб рдмрдирд╛рдирд╛ рднреА рд╕рд░рд▓ рд╣реИ:

 coproduct List<t> { Unit empty = 0; Pair<t, List<t>> cons = 1; } 

рдмреЗрд╢рдХ, рдХреНрд░рдордмрджреНрдзрддрд╛ рдХрд╛ рдЕрд╕рд▓реА рддрд░реНрдХ рдЖрдкрдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреБрдЫ рдмреЗрд╣рддрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ - рдЖрдЦрд┐рд░рдХрд╛рд░, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рд╢рдмреНрджрд╛рд░реНрде рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИрдВ ред

рджреВрдм рдХрд╛ рдЪреБрдирд╛рд╡


рдЬрд╛рд╡рд╛-рд╢реИрд▓реА рдХреЗ рдкреНрд░реЛрдЯреЛрдмрдлрд░реНрд╕ рд╕реНрдХреЗрд▓рд░ рдФрд░ рд╕рдВрджреЗрд╢ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рддреЗ рд╣реИрдВред рдорд╢реАрди рдкреНрд░рд╛рдЗрдореЗрдЯрд░реА рдореЗрдВ int32 рдХрдо рдпрд╛ рдЬреНрдпрд╛рджрд╛ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ - int32 , bool рдФрд░ string рдЬреИрд╕реА рдЪреАрдЬреЗрдВред рд╕рдВрджреЗрд╢ рдкреНрд░рдХрд╛рд░, рджреВрд╕рд░реА рдУрд░, рд╕рднреА рд╢реЗрд╖ рд╣реИрдВред рд╕рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдХрд╛рд░ рд╕рдВрджреЗрд╢ рд╣реИрдВред

рдмреЗрд╢рдХ, рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рдХрд╛рд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╢рдмреНрджрд╛рд░реНрде рд╣реИрдВред

рд╕реНрдХреЗрд▓рд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдлрд╝реАрд▓реНрдб рд╣рдореЗрд╢рд╛ рдореМрдЬреВрдж рд╣реЛрддреЗ рд╣реИрдВред рднрд▓реЗ рд╣реА рдЖрдкрдиреЗ рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реЛред рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛ рдерд╛ рдХрд┐ (рдХрдо рд╕реЗ рдХрдо рдкреНрд░реЛрдЯреЛ 3 рдореЗрдВ) ) рд╕рднреА рдкреНрд░реЛрдЯреЛ-рдмрдлрд╝рд░реНрд╕ рдХреЛ рд╢реВрдиреНрдп рдХреЗ рд▓рд┐рдП рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдЙрдирдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдбреЗрдЯрд╛ рди рд╣реЛ? рд╕реНрдХреЗрд▓рд░ рдлрд╝реАрд▓реНрдб рдХреЛ рдирдХрд▓реА рдорд╛рди рдорд┐рд▓рддреЗ рд╣реИрдВ: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, uint32 рдХреЛ 0 uint32 рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ string рдХреЛ "" рд▓рд┐рдП рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ string рд╣реИред

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

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

рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рддреБрд▓рдирд╛ рд╕рдВрджреЗрд╢ рдкреНрд░рдХрд╛рд░реЛрдВ рд╕реЗ рдХрд░реЗрдВред рдЬрдмрдХрд┐ рдЕрджрд┐рд╢ рдХреНрд╖реЗрддреНрд░ "рдЧреВрдВрдЧрд╛" рд╣реИрдВ, рд╕рдВрджреЗрд╢ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд╛рдЧрд▓ рд╣реИ ред рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ, рд╕рдВрджреЗрд╢ рдХреНрд╖реЗрддреНрд░ рдпрд╛ рддреЛ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд╛рдЧрд▓ рд╣реИред рдЙрдирдХреЗ рд╕рд╣рд╛рдпрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рдЫрджреНрдо рдХреЛрдб рдПрдХ рд╣рдЬрд╛рд░ рд╢рдмреНрджреЛрдВ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред рдЬрд╛рд╡рд╛ рдпрд╛ рдХрд╣реАрдВ рдФрд░ рдЗрд╕рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ:

 private Foo m_foo; public Foo foo { // only if `foo` is used as an expression get { if (m_foo != null) return m_foo; else return new Foo(); } // instead if `foo` is used as an lvalue mutable get { if (m_foo = null) m_foo = new Foo(); return m_foo; } } 

рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрджрд┐ foo рдлрд╝реАрд▓реНрдб рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЖрд░рдВрднрд┐рдХ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА, рдЪрд╛рд╣реЗ рдЖрдк рдЗрд╕реЗ рдкреВрдЫреЗрдВ рдпрд╛ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдХрдВрдЯреЗрдирд░ рдХреЛ рдмрджрд▓ рдирд╣реАрдВ рд╕рдХрддреЗред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк foo рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЙрд╕рдХреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЛ рднреА рдмрджрд▓ рджреЗрдЧрд╛! рдпрд╣ рд╕рдм рдХреЗрд╡рд▓ Maybe Foo рдкреНрд░рдХрд╛рд░ рдФрд░ рдЗрд╕рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд "рд╕рд┐рд░рджрд░реНрдж" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдХрд┐ рдПрдХ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдореВрд▓реНрдп рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдРрд╕рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрд╣рдВрдХрд╛рд░реА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрд╛рдиреВрди рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддрд╛ рд╣реИ! рд╣рдо рдиреМрдХрд░реА рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВред msg.foo = msg.foo; рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╢реВрдиреНрдп-рдЖрд░рдВрдн рдХреЗ рд╕рд╛рде foo рдХреА рдПрдХ рдкреНрд░рддрд┐ рдореЗрдВ msg рдХреЛ рдЪреБрдкрдЪрд╛рдк рдмрджрд▓ рджреЗрддрд╛ рд╣реИ рдпрджрд┐ рдпрд╣ рдкрд╣рд▓реЗ рдореМрдЬреВрдж рдирд╣реАрдВ рдерд╛ред

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

 if (src.has_foo(src)) { dst.set_foo(src.foo()); } 

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐, рдХрдо рд╕реЗ рдХрдо рд╕реНрдереИрддрд┐рдХ рдЯрд╛рдЗрдкрд┐рдВрдЧ рд╡рд╛рд▓реА рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ, рдпрд╣ рдЯреЗрдореНрдкрд▓реЗрдЯ foo() , set_foo() рдФрд░ has_foo() рдмреАрдЪ рдирд╛рдордорд╛рддреНрд░ рд╕рдВрдмрдВрдз рдХреЗ рдХрд╛рд░рдг рд╕рд╛рд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ ред рдЪреВрдБрдХрд┐ рдпреЗ рд╕рднреА рдХрд╛рд░реНрдп рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИрдВ , рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░реЛрдЧреНрд░реЗрд╕рд┐рд╡ рдореИрдХреНрд░реЛ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХрд╛ рд╕рд╛рдзрди рдирд╣реАрдВ рд╣реИ:

 #define COPY_IFF_SET(src, dst, field) \ if (src.has_##field(src)) { \ dst.set_##field(src.field()); \ } 

(рд▓реЗрдХрд┐рди рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдореИрдХреНрд░реЛрдЬрд╝ Google рд╢реИрд▓реА рдЧрд╛рдЗрдб рджреНрд╡рд╛рд░рд╛ рдирд┐рд╖рд┐рджреНрдз рд╣реИрдВ)ред

рдпрджрд┐ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╕рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ Maybe рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдЖрдк рдЕрдореВрд░реНрдд рдбрд╛рдпрд▓ рд╕рд╛рдерд┐рдпреЛрдВ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╢рдмреНрджрд╛рд░реНрде рд╕рдВрдШ рдХреЗ рд╕рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╣рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХрд╛ рдШреГрдгрд┐рдд, рдЕрд╡рд░реНрдгрдиреАрдп рд╕реНрд░реЛрдд рдорд┐рд▓рддрд╛ рд╣реИ! рдЬрдм рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдПрдХ рдЕрд╡реИрдз рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ msg.foo = msg.foo; , рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдЪреБрдкрдЪрд╛рдк рдбреЗрдЯрд╛ рдХреА рдордирдорд╛рдиреА рдорд╛рддреНрд░рд╛ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ!

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

рдпрд╣ рд╕реБрдирдирд╛ рдмрд╣реБрдд рд╕реБрдЦрдж рдирд╣реАрдВ рд╣реИ, рдЦрд╛рд╕рдХрд░ рд╣рдордореЗрдВ рд╕реЗ рдЬреЛ рдкреИрд░рд╛рдореАрдЯреНрд░рд┐рдХ рдмрд╣реБрд░реВрдкрддрд╛ рд╕реЗ рдкреНрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЗрд╕рдХреЗ рдареАрдХ рд╡рд┐рдкрд░реАрдд рдХрд╛ рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реИ ред

рдкрд┐рдЫрдбрд╝реЗ рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреА рдЕрдиреБрдХреВрд▓рддрд╛ рдирд┐рд╣рд┐рдд рд╣реИ


рдкреНрд░реЛрдЯреЛрдмрдлрд░реНрд╕ тАЛтАЛрдХреЗ рдЕрдХреНрд╕рд░ рдЙрд▓реНрд▓реЗрдЦрд┐рдд "рдХрд┐рд▓рд░ рдлреАрдЪрд░реНрд╕" рдореЗрдВ рд╕реЗ рдПрдХ рдЙрдирдХреА "рдкрд┐рдЫрдбрд╝реЗ рдФрд░ рдЖрдЧреЗ рдХреА рд╕рдВрдЧрдд рд╕рдВрдЧрдд рд▓рд┐рдЦрдиреЗ рдХреА рдкрд░реЗрд╢рд╛рдиреА рдореБрдХреНрдд рдХреНрд╖рдорддрд╛" рд╣реИред рд╕рддреНрдп рдХреЛ рдЕрд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрдерди рдЖрдкрдХреА рдЖрдБрдЦреЛрдВ рдХреЗ рд╕рд╛рдордиреЗ рд▓рдЯрдХрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

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

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

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

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

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

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

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

рдЗрд╕рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВред рдЖрдк Google рдХреЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдк рдХрднреА рднреА рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХреЗ рдХрд╛рд░реНрдЧреЛ рдкрдВрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдмрдВрдж рдХрд░ рджреЗрдВ рдХреНрдпреЛрдВрдХрд┐ "Google рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ," рдФрд░ рдХреНрдпреЛрдВрдХрд┐ "рдпреЗ рдЙрджреНрдпреЛрдЧ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдПрдВ рд╣реИрдВред"

рдкреНрд░реЛрдЯреЛрдмрдлрд░реНрд╕ тАЛтАЛрдХреЛрдбрдмреЗрд╕ рдХреЛ рдкреНрд░рджреВрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ


рдпрджрд┐ рдкреНрд░реЛрдЯреЛрдмреЙрдлрд╝рд░реНрд╕ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдХреЗрд╡рд▓ рдиреЗрдЯрд╡рд░реНрдХ рддрдХ рд╕реАрдорд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛, рддреЛ рдореИрдВ рдЗрд╕ рддрдХрдиреАрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЗрддрдиреА рдХрдареЛрд░ рдмрд╛рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдХрдИ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ, рдЙрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред

Protobuffers рдЙрд╕ рдбреЗрдЯрд╛ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рд╕рдВрдЪрд╛рд░ рдЪреИрдирд▓ рдкрд░ рднреЗрдЬрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╡реЗ рдЕрдХреНрд╕рд░ рд╕рдВрдЧрдд рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдорд╛рди рдирд╣реАрдВ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рд╣рдореЗрдВ рдЕрд╕рд╣рдЬ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдбрд╛рд▓рддрд╛ рд╣реИ, рдЖрдкрдХреЛ рддреАрди рдмреБрд░реЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдЪреБрдирдирд╛ рд╣реЛрдЧрд╛:

  1. рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдмрдирд╛рдП рд░рдЦреЗрдВ рдЬреЛ рдЙрд╕ рдбреЗрдЯрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рджреЛрдиреЛрдВ рдкреНрд░рдХрд╛рд░ рдПрдХ рд╕рд╛рде рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред
  2. рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдФрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкреВрд░рд╛ рдбреЗрдЯрд╛ рдкреИрдХ рдХрд░реЗрдВред
  3. рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХреЗ рд▓рд┐рдП рд▓рдШреБ рдкреНрд░рд╛рд░реВрдк рд╕реЗ рд╣рд░ рдмрд╛рд░ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

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

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

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

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

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

рдПрдХ рдареЛрд╕ рдЖрдзрд╛рд░ рдкрд░, рд╡реНрдпрд░реНрде рдЪреАрдЬреЛрдВ рдХреЛ рдорд╣рд╕реВрд╕ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рджрд┐рд╢рд╛ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЖрдк рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рд╛рдЪреАрди рдЖрддрдВрдХ рдХреЗ рд╕рд╛рдеред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЬреЛ рдХреЛрдИ рднреА рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдкреНрд░реЛрдЯреЛрдмрд░реНрдлрд░реНрд╕ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЙрд╕реЗ рдЙрдореНрдореАрдж рдЫреЛрдбрд╝ рджреЗрдВред



1. рдЖрдЬ рддрдХ, Google рдкрд░ proto2 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЧрд░реНрдо рдЪрд░реНрдЪрд╛ рдЪрд▓ рд░рд╣реА рд╣реИ рдФрд░ рдХреНрдпрд╛ рдХрднреА рдлрд╝реАрд▓реНрдб рдХреЛ required рд░реВрдк рд╕реЗ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ " optional рд╣рд╛рдирд┐рдХрд╛рд░рдХ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ" рдФрд░ " required рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рд╣рд╛рдирд┐рдХрд╛рд░рдХ" рдЙрд╕реА рд╕рдордп рд╡рд┐рддрд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рд╕реМрднрд╛рдЧреНрдп рдпрд╣ рд▓реЛрдЧ рдмрд╛рд╣рд░ рдЖрдВрдХрдбрд╝рд╛ред тЖС

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


All Articles