рдПрдл # 4: рд▓реЗрдЯ / рдпреВрдЬ / рдбреВ

рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рд╣рдо F # рдореЗрдВ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЛ рджреЗрдЦреЗрдВрдЧреЗ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╣рдо Let / Use / Do рдХреЛ рджреЗрдЦреЗрдВрдЧреЗред рдЕрдм рдЖрдк рд╕реНрд╡рдпрдВ рд╕реЗ рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдмрд╛рдБрдз рд╣реИрдВ, рдФрд░ рдЪреВрдВрдХрд┐ рд╣рдордиреЗ рдЕрднреА рддрдХ рдЙрдирдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХреА рд╣реИ, рдЕрдм рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред

рд╕реАрдзреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдХрд╣реЗрдВ, рдПрдХ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдПрдХ рдореВрд▓реНрдп рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддрд╛ рд╣реИред

рдЪрд▓реЛ


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

module DemoModule = let someFunction = let a = 1 let b = 2 a * b 

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

рддреЛ рдЖрдЗрдП рдХреБрдЫ рдФрд░ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред

 let aString ="this is a string" let aInt = 12 let aDecimal = 12.444 let aPiFunction () = Math.PI let aSquareRootFunction (x) = Math.Sqrt(x) let aFullyTypedSquareRootFunction (x :float) = Math.Sqrt(x) let a,b = "a","tuple" 

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

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

рдЕрдиреНрдпрддреНрд░, рдЖрдк рдХрдХреНрд╖рд╛ рдореЗрдВ рд▓реЗрдЯ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдЗрд╕ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗред

рдЖрдк MSDN рдкрд░ Let рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдЙрдкрдпреЛрдЧ


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

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

 use sw = new StreamWriter(@"c:\temp\fprintfFile.txt") fprintf sw "This is a string line %s\r\n" "cat" fprintf sw "This is a int line %i" 10 sw.Close() 

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдЯреНрд░реАрдорд╡рд┐рдЯрд░ рд╡рд┐рдзрд┐ рдКрдкрд░ рджрд┐рдЦрд╛рдП рдЧрдП sw.Close () рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЕрдкрдиреЗ рдирд┐рдкрдЯрд╛рди () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧреАред

IDisposables рдХреЗ рд╕рд╛рде рдХреЗрд╡рд▓ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдФрд░ рдЖрдк рдПрдХ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬрд╝ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:

рдЫрд╡рд┐

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

 let Write = use sw = new StreamWriter(@"c:\temp\fprintfFile.txt") sw 

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

 let Write callback = use sw = new StreamWriter(@"c:\temp\fprintfFile.txt") fprintf sw "Write is writing to the StreamWriter" callback sw sw let callback sw = fprintf sw "sw is the StreamWriter" let disp = Write callback 

Do


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

рдпрд╣рд╛рдБ Do рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рджрд┐рдП рдЧрдП рд╣реИрдВред

 do printf "doing the do" //oh oh not a unit do printf "print a sum %i" 1 + 1 do 1 + 1 

рдЕрдЧрд░ рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЖрдкрдХреЛ рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рджрд┐рдЦрд╛рддрд╛ рд╣реВрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдХрдВрдкрд╛рдЗрд▓рд░ рд╢рд┐рдХрд╛рдпрдд рдХрд░реЗрдЧрд╛ рдпрджрд┐ рдЖрдк рдЧреИрд░-рдпреВрдирд┐рдЯ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рде Do рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред

рдЫрд╡рд┐

рдЖрдкрдХреЗ рдкрд╛рд╕ рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:

  • рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
  • рдмрд╛рдВрдзрдиреЗ рджреЛ

рдореИрдВрдиреЗ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдпрд╛:

 let x = 1 + 1 do printf "print a sum %i" x do (1+1 |> ignore) 

рдХрд░рддреЗ рд╣реИрдВ! рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ! рдХреНрдпрд╛!


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

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


All Articles