{"id":349379,"date":"2023-06-27T09:00:59","date_gmt":"2023-06-27T09:00:59","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=349379"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=349379","title":{"rendered":"<span>\u0411\u043e\u043b\u044c\u0448\u0435 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0411\u043e\u0433\u0443 \u043a\u043b\u0430\u0441\u0441\u043e\u0432<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/dac\/1dd\/c7e\/dac1ddc7e30627d7abf53c847f49bb12.jpeg\" alt=\"Distracted men meme: New clas modifier\" width=\"690\" height=\"362\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/dac\/1dd\/c7e\/dac1ddc7e30627d7abf53c847f49bb12.jpeg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption>Distracted men meme: New clas modifier<\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438\u00a0<em>Dart<\/em>\u00a0\u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0430 3-\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u044f\u0437\u044b\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u0432\u043d\u0435\u0441\u043b\u0430 \u043c\u043d\u043e\u0433\u043e \u043d\u043e\u0432\u044b\u0445 \u043a\u0440\u0443\u0442\u044b\u0445 \u0448\u0442\u0443\u043a \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439. \u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u043d\u043e\u0432\u043e\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u0441\u0442\u0430\u043b\u0438 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u043a\u043b\u0430\u0441\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u043b\u0438 \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438\u00a0<em>Dart<\/em>. \u0421 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u043d\u043e\u0432\u044b\u0435 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u043b\u043e\u0436\u0430\u0442\u0441\u044f \u0432 \u0441\u0442\u0440\u043e\u0439\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u0443 \u0438 \u0434\u0430\u0436\u0435 \u043b\u043e\u0433\u0438\u0447\u043d\u044b; \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 &#8212; \u0447\u0443\u0432\u0441\u0442\u0432\u0443\u0435\u0442\u0441\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043d\u043e\u0433\u043e\u0441\u043b\u043e\u0432\u043d\u043e\u0441\u0442\u044c (\u00a0<code>abstract interface class<\/code>\u00a0\u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0431\u0449\u0435\u043f\u0440\u0438\u043d\u044f\u0442\u043e\u0433\u043e\u00a0<code>interface<\/code>) \u0438 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u044f\u0434\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u0430\u043d\u0435\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e. \u041d\u043e\u0432\u044b\u0435 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b \u0438 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f, \u043d\u043e \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043d\u0435 \u043e \u043d\u0438\u0445). \u041e\u0441\u0442\u0430\u0432\u0438\u043c \u0443\u0436\u0435 \u0432\u044b\u0448\u0435\u0434\u0448\u0438\u0435 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439. \u041b\u043e\u0433\u0438\u0447\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c: \u043e \u0447\u0435\u043c \u0442\u043e\u0433\u0434\u0430 \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u043e\u0439\u0434\u0435\u0442 \u0440\u0435\u0447\u044c? \u0417\u0430\u0438\u043d\u0442\u0440\u0438\u0433\u043e\u0432\u0430\u043d\u044b? \u0422\u043e\u0433\u0434\u0430 \u0434\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434 \u043a\u0430\u0442.<\/p>\n<p>\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u043e\u0432\u044b\u0439 (\u0441\u043a\u043e\u0440\u0435\u0435 \u0434\u0430\u0436\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439) \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043a\u043b\u0430\u0441\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u0435\u0449\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0441\u0442\u0430\u0434\u0438\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 (<em>accepted proposal<\/em>, \u0435\u0441\u043b\u0438 \u0431\u044b\u0442\u044c \u0442\u043e\u0447\u043d\u0435\u0435), \u043d\u043e \u0443\u0436\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0440\u0430\u0439\u043d\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c. \u041d\u0435 \u0431\u0443\u0434\u0443 \u0442\u043e\u043c\u0438\u0442\u044c &#8212; \u0440\u0435\u0447\u044c \u0438\u0434\u0435\u0442 \u043e\u0431\u00a0<a href=\"https:\/\/github.com\/dart-lang\/language\/blob\/main\/accepted\/future-releases\/inline-classes\/feature-specification.md\" rel=\"noopener noreferrer nofollow\">\u0438\u043d\u043b\u0430\u0439\u043d \u043a\u043b\u0430\u0441\u0441\u0430\u0445<\/a>\u00a0(<code>inline class<\/code>). \u0427\u0442\u043e \u044d\u0442\u043e \u0437\u0430 \u0437\u0432\u0435\u0440\u044c \u0442\u0430\u043a\u043e\u0439? \u0427\u0435\u043c \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0432 \u043f\u043e\u0432\u0441\u0435\u0434\u043d\u0435\u0432\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435? \u041a\u0430\u043a \u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f? \u0418\u043c\u0435\u043d\u043d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u0434\u0430\u043d\u043d\u0430\u044f \u0437\u0430\u043c\u0435\u0442\u043a\u0430. \u041d\u0443, \u0430 \u043f\u043e\u043a\u0430 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043f\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044e \u0444\u0438\u0447\u0438 \u0445\u043e\u0442\u044f \u0431\u044b \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c (\u0443\u0433\u0430\u0434\u0430\u0442\u044c), \u0447\u0442\u043e \u044d\u0442\u0430 \u0444\u0438\u0447\u0430 \u0434\u0435\u043b\u0430\u0435\u0442.<\/p>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043d\u0430\u0447\u0430\u0442\u044c \u0443\u0433\u043b\u0443\u0431\u043b\u044f\u0442\u044c\u0441\u044f \u0432 \u0442\u0435\u043c\u0443, \u0441\u0442\u043e\u0438\u0442 \u0437\u0430\u0434\u0430\u0442\u044c\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c: &#171;\u0410 \u043d\u0435 \u043d\u043e\u0432\u0438\u043d\u043a\u0430 \u043b\u0438 \u044d\u0442\u043e? \u0418\u043b\u0438 \u0443\u0436\u0435 \u043a\u0442\u043e-\u0442\u043e \u0440\u0430\u043d\u044c\u0448\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u043b \u043d\u0435\u0447\u0442\u043e \u043f\u043e\u0445\u043e\u0436\u0435\u0435?&#187;. \u0418 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441, \u043a\u0430\u043a \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u0431\u044b\u0432\u0430\u0435\u0442: \u043d\u0438\u0447\u0442\u043e \u043d\u0435 \u043d\u043e\u0432\u043e \u043f\u043e\u0434 \u043b\u0443\u043d\u043e\u0439. \u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438,\u00a0<em>Dart<\/em>\u00a0\u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u043e\u043f\u0440\u043e\u0445\u043e\u0434\u0446\u0435\u043c \u0432 \u044d\u0442\u043e\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u043f\u043e\u0434\u043e\u0431\u043d\u0430\u044f \u0444\u0438\u0447\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u044f\u0437\u044b\u043a\u0430\u0445, \u043a\u0430\u043a \u043e\u043d\u0430 \u0432 \u043d\u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438 \u0447\u0435\u043c \u043f\u043e\u043b\u0435\u0437\u043d\u0430; \u043d\u0443, \u0430 \u0443\u0436\u0435 \u043f\u043e\u0442\u043e\u043c \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a \u0435\u0435 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 \u044f\u0437\u044b\u043a\u0435\u00a0<em>Dart<\/em>\u00a0\u0438 \u0434\u0440\u0443\u0433\u0438\u043c \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u043c.<\/p>\n<h3>Abstracts in Haxe<\/h3>\n<p>\u041f\u0435\u0440\u0432\u043e\u0435 \u043c\u043e\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e \u0441 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0439 \u0444\u0438\u0447\u0435\u0439 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u0432 \u0448\u0438\u0440\u043e\u043a\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u043c \u0432 \u0443\u0437\u043a\u0438\u0445 \u043a\u0440\u0443\u0433\u0430\u0445 \u044f\u0437\u044b\u043a\u0435\u00a0<a href=\"https:\/\/haxe.org\/\" rel=\"noopener noreferrer nofollow\"><em>Haxe<\/em><\/a>. \u0414\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u0441\u043b\u044b\u0448\u0438\u0442 \u044d\u0442\u043e \u0438\u043c\u044f, \u043f\u043e\u044f\u0441\u043d\u044e.\u00a0<em>Haxe<\/em>\u00a0&#8212; \u044d\u0442\u043e \u044f\u0437\u044b\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c (\u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438) \u043a\u043e\u0434 \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c (\u0438 \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f) \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0435\u0434\u0438\u043d\u043e\u0439 \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u044b.\u00a0<em>Haxe<\/em>\u00a0&#8212; \u044d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043a\u0430\u043a\u00a0<em>Flutter<\/em>, \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0440\u0435\u0434\u0438 \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u042f \u0440\u0430\u043d\u0435\u0435 \u0443\u0436\u0435 \u0434\u0435\u043b\u0430\u043b \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043e\u0431\u0437\u043e\u0440 \u044d\u0442\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u0438 \u0435\u0433\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439, \u0438 \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0441 \u043d\u0438\u043c \u043c\u043e\u0436\u043d\u043e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f\u00a0<a href=\"https:\/\/syntaxerror.ru\/haxe-unity-among-programming-languages\/\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u0418 \u0445\u043e\u0442\u044f \u0441 \u0442\u0435\u0445 \u043f\u043e\u0440 \u0443\u0436\u0435 \u043c\u043d\u043e\u0433\u043e \u0432\u043e\u0434\u044b \u0443\u0442\u0435\u043a\u043b\u043e, \u0438\u00a0<em>Haxe<\/em>\u00a0\u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u043d\u0430 \u043c\u0435\u0441\u0442\u0435 \u0438 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c, \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u043c, \u044f\u0437\u044b\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043c\u043e\u0436\u043d\u043e.<\/p>\n<p>\u0412\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a \u043d\u0430\u0448\u0438\u043c\u00a0<s>\u0431\u0430\u0440\u0430\u043d\u0430\u043c<\/s>\u00a0\u043a\u043b\u0430\u0441\u0441\u0430\u043c. \u0412\u00a0<em>Haxe<\/em>\u00a0\u0435\u0441\u0442\u044c \u0442\u0438\u043f \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f\u00a0<a href=\"https:\/\/haxe.org\/manual\/types-abstract.html\" rel=\"noopener noreferrer nofollow\"><em>Abstract<\/em><\/a>. \u0414\u0430, \u0441 \u043d\u0435\u0439\u043c\u0438\u043d\u0433\u043e\u043c \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u043e\u0447\u0435\u043d\u044c. \u041d\u0438\u0447\u0435\u0433\u043e \u043e\u0431\u0449\u0435\u0433\u043e \u0441 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u043c\u0438 \u043a\u043b\u0430\u0441\u0441\u0430\u043c\u0438 \u044d\u0442\u043e\u0442 \u0442\u0438\u043f \u043d\u0435 \u0438\u043c\u0435\u0435\u0442. \u0410 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435, \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e, \u043c\u043e\u0436\u0435\u0442 \u0432\u0432\u0435\u0441\u0442\u0438 \u0432 \u0437\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u0435. \u041a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e\u00a0<code>abstract<\/code>\u00a0\u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0435 (\u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0442\u0438\u043f\u043e\u0432) \u0442\u0438\u043f\u044b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0443\u0436\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u0445\u0441\u044f. \u0417\u0432\u0443\u0447\u0438\u0442 \u0441\u043b\u043e\u0436\u043d\u043e, \u043d\u043e \u043f\u043e \u0444\u0430\u043a\u0442\u0443 \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a. \u0410\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u044b \u0432\u00a0<em>Haxe<\/em>\u00a0\u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043d\u0435\u0441\u0442\u0438 \u043a \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u043c\u00a0<em>zero cost abstraction<\/em>\u00a0\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c. \u041f\u043e\u0434 \u043d\u0438\u043c\u0438 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u044e\u0442 \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u044f\u0437\u044b\u043a\u0430 \u0438 \u0440\u0430\u0437\u043d\u043e\u0433\u043e \u0440\u043e\u0434\u0430 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0430\u0445\u0430\u0440, \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f &#171;\u043f\u043b\u0430\u0442\u0438\u0442\u044c&#187;\u00a0<em>run-time<\/em>\u00a0\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e. \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0442\u0430\u043a\u0438\u0435 \u0442\u0438\u043f\u044b \u0432\u00a0<em>Haxe<\/em>\u00a0\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438, \u0430 \u0432\u00a0<em>run-time<\/em>\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0442\u0438\u043f\u044b. \u0417\u0430 \u0441\u0447\u0435\u0442 \u0447\u0435\u0433\u043e, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043c\u044b \u0438 \u043c\u043e\u0436\u0435\u043c \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043f\u0440\u043e\u00a0<em>zero cost abstractions<\/em>.<\/p>\n<p>\u041f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u0430 \u043d\u0430\u00a0<em>Haxe<\/em>\u00a0\u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cs\">abstract MyInt(Int) {   inline public function new(i:Int) {     this = i;   } }<\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u043e\u0431\u044a\u044f\u0432\u0438\u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u0439 \u0442\u0438\u043f\u00a0<code>MyInt<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u0446\u0435\u043b\u044b\u043c \u0442\u0438\u043f\u043e\u043c\u00a0<code>Int<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u0445\u00a0<em>Haxe<\/em>\u00a0\u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c \u0442\u0438\u043f\u043e\u043c (<em>concrete type<\/em>). \u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u043c\u044b \u0432\u0432\u0435\u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u0442\u0438\u043f \u0441 \u0438\u043c\u0435\u043d\u0435\u043c\u00a0<code>MyInt<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u043f\u043e \u0441\u0432\u043e\u0435\u0439 \u0441\u0443\u0442\u0438, \u0441 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0431\u043e\u0441\u043e\u0431\u043b\u0435\u043d\u043d\u044b\u043c \u043d\u043e\u0432\u044b\u043c \u0442\u0438\u043f\u043e\u043c (\u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438), \u043d\u043e \u043f\u043e \u0444\u0430\u043a\u0442\u0443 (\u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f) \u0432\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0431 \u044d\u0442\u043e\u043c \u0442\u0438\u043f\u0435 \u0441\u0442\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0442\u0438\u043f \u0446\u0435\u043b\u044b\u0445 \u0447\u0438\u0441\u0435\u043b. \u041f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f:<\/p>\n<pre><code class=\"cs\">class Main {   static public function main() {     var a = new MyInt(12);     trace(a); \/\/ 12   } }<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0432 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438, \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c\u00a0<code>12<\/code>. \u041f\u043e\u043a\u0430 \u0447\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u0432\u0435\u0440\u0445\u044a\u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e. \u041d\u043e \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"cs\">class Main {     static public function main() {         var a : MyInt = 12;         trace(a);     } }<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043a\u043e\u0434, \u0442\u043e \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435:<\/p>\n<pre><code>src\/Main.hx:9: characters 3-22 : Int should be MyInt<\/code><\/pre>\n<p>\u041e\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043d\u0430\u043c, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0446\u0435\u043b\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0442\u0430\u043c, \u0433\u0434\u0435 \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0448 \u043d\u043e\u0432\u044b\u0439 \u0442\u0438\u043f\u00a0<code>MyInt<\/code>, \u043d\u0435\u043b\u044c\u0437\u044f. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043f\u043e \u0444\u0430\u043a\u0442\u0443 (\u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0430\u0431\u0437\u0430\u0446\u0435 \u043c\u044b \u0432 \u044d\u0442\u043e\u043c \u0443\u0431\u0435\u0434\u0438\u043c\u0441\u044f \u043b\u0438\u0447\u043d\u043e) \u0443 \u043d\u0430\u0441 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0435\u0435 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043a\u0430\u043a \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 (\u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0442\u0438\u043f\u043e\u0432) \u0442\u0438\u043f. \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u044d\u0442\u0438\u043c \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u044b \u0432\u00a0<em>Haxe<\/em>\u00a0\u0438 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u043e\u0442 \u0430\u043b\u0438\u0430\u0441\u043e\u0432 (\u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u043e\u0432) \u0442\u0438\u043f\u043e\u0432. \u0418 \u0432 \u044d\u0442\u043e\u043c \u0438\u0445 \u0441\u0438\u043b\u0430. \u0410\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u044b \u0441\u043c\u043e\u0433\u043b\u0438 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u043f\u043b\u044e\u0441\u044b \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u0442\u0438\u043f\u043e\u0432 \u0438 \u0430\u043b\u0438\u0430\u0441\u043e\u0432, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0438\u0437\u0431\u0435\u0436\u0430\u0432 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u0432 \u043a\u0430\u043a \u043f\u0435\u0440\u0432\u044b\u0445, \u0442\u0430\u043a \u0438 \u0432\u0442\u043e\u0440\u044b\u0445.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u044b \u0432\u00a0<em>Haxe<\/em>\u00a0&#8212; \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0430\u0445\u0430\u0440 \u043f\u043e\u0432\u0435\u0440\u0445 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0442\u0438\u043f\u0430, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440, \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<pre><code class=\"cs\">abstract MyInt(Int) {     inline public function new(i:Int) {         this = i;     } }  class RealClassInt {     final field:Int;      public function new(field:Int) {         this.field = field;     }      @override public function toString():String {         return Std.string(field);     } }  class Main {     static public function main() {         var a : MyInt = new MyInt(12);         var b : RealClassInt = new RealClassInt(13);         trace(a);         trace(b);     } }<\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441-\u043e\u0431\u0435\u0440\u0442\u043a\u0443\u00a0<code>RealClassInt<\/code>, \u0447\u0442\u043e\u0431\u044b \u043c\u044b \u043c\u043e\u0433\u043b\u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434. \u0415\u0441\u043b\u0438 \u043c\u044b \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c \u043d\u0430\u0448 \u043a\u043e\u0434 \u0432\u00a0<em>JS<\/em>, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e (\u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0435\u0440\u0441\u0438\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430) \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<pre><code class=\"javascript\">\/\/ ...  var MyInt = {}; MyInt._new = function(i) {     return i; }; var RealClassInt = function(field) {     this.field = field; }; RealClassInt.__name__ = true; RealClassInt.prototype = {     toString: function() {         return Std.string(this.field);     } }; var Main = function() { }; Main.__name__ = true; Main.main = function() {     var a = 12;     var b = new RealClassInt(13);     console.log(\"Main.hx:23:\",a);     console.log(\"Main.hx:24:\",b); };  \/\/ ...<\/code><\/pre>\n<p>\u041d\u0430\u0441 \u0432\u043e\u043b\u043d\u0443\u0435\u0442 \u043a\u043e\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0438\u00a0<code>main<\/code>. \u0418, \u043a\u0430\u043a \u043d\u0435\u0442\u0440\u0443\u0434\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0433\u0434\u0435 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442, \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e\u00a0<code>a<\/code>\u00a0\u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u00a0<code>12<\/code>, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f, \u043a\u0430\u043a \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e\u00a0<code>b<\/code>\u00a0\u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043f\u043e\u043b\u0435\u043c. \u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0432\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u043d\u0430\u00a0<em>Java<\/em>:<\/p>\n<pre><code class=\"java\">import haxe.root.*;  @SuppressWarnings(value={\"rawtypes\", \"unchecked\"}) public class Main extends haxe.lang.HxObject {     \/\/ ...          public static void main()     {         int a = ((int) (12) );         haxe.root.RealClassInt b = new haxe.root.RealClassInt(((int) (13) ));         haxe.Log.trace.__hx_invoke2_o(((double) (a) ), haxe.lang.Runtime.undefined, 0.0, new haxe.lang.DynamicObject(new java.lang.String[]{\"className\", \"fileName\", \"methodName\"}, new java.lang.Object[]{\"Main\", \"Main.hx\", \"main\"}, new java.lang.String[]{\"lineNumber\"}, new double[]{((double) (((double) (23) )) )}));         haxe.Log.trace.__hx_invoke2_o(0.0, b, 0.0, new haxe.lang.DynamicObject(new java.lang.String[]{\"className\", \"fileName\", \"methodName\"}, new java.lang.Object[]{\"Main\", \"Main.hx\", \"main\"}, new java.lang.String[]{\"lineNumber\"}, new double[]{((double) (((double) (24) )) )}));     } }<\/code><\/pre>\n<p>\u0420\u043e\u0432\u043d\u043e \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435 \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u0439 \u0442\u0438\u043f\u00a0<code>Int<\/code>, \u0438 \u043e\u0431\u0435\u0440\u0442\u043a\u0438 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f. \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u043a\u043e\u0434 \u043d\u0430\u00a0<em>C#<\/em>\u00a0\u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cs\">\/\/ Generated by Haxe 4.3.1  \/\/ ... #pragma warning disable 109, 114, 219, 429, 168, 162 namespace _Main {     public sealed class MyInt_Impl_ {         [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]         public static int _new(int i) {             return ((int) (i) );         }     } }  #pragma warning disable 109, 114, 219, 429, 168, 162 public class RealClassInt : global::haxe.lang.HxObject {     \/\/ ...     public RealClassInt(int field) {         global::RealClassInt.__hx_ctor__RealClassInt(this, field);     }          public int field;          public virtual string toString() {         return global::Std.@string(this.field);     } }  public class Main : global::haxe.lang.HxObject {     public static void main() {         unchecked {             int a = ((int) (12) );             global::RealClassInt b = new global::RealClassInt(((int) (13) ));             global::haxe.Log.trace.__hx_invoke2_o(((double) (a) ), global::haxe.lang.Runtime.undefined, default(double), new global::haxe.lang.DynamicObject(new int[]{302979532, 1547539107, 1648581351}, new object[]{\"main\", \"Main\", \"Main.hx\"}, new int[]{1981972957}, new double[]{((double) (23) )}));             global::haxe.Log.trace.__hx_invoke2_o(default(double), b, default(double), new global::haxe.lang.DynamicObject(new int[]{302979532, 1547539107, 1648581351}, new object[]{\"main\", \"Main\", \"Main.hx\"}, new int[]{1981972957}, new double[]{((double) (24) )}));         }     } }<\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u0430 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0442\u0430\u043a\u0430\u044f \u0436\u0435. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u0442\u0430\u0442\u044c \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0434 &#171;\u043a\u0430\u043f\u043e\u0442\u043e\u043c&#187;. \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u044b \u0432\u00a0<em>Haxe<\/em>\u00a0&#8212; \u044d\u0442\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0430\u0445\u0430\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0438 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u0442\u0438\u043f\u043e\u0432 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0431\u0435\u0437 \u0441\u043e\u043f\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0441 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e. \u041b\u043e\u0433\u0438\u0447\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441: \u0433\u0434\u0435 \u0438 \u0437\u0430\u0447\u0435\u043c \u0442\u0430\u043a\u043e\u0435 \u043d\u0443\u0436\u043d\u043e? \u0421\u0430\u043c\u044b\u0439 \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440: \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u0432\u0435\u0441\u0442\u0438 \u0442\u0438\u043f\u044b \u0441 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u044f\u043c\u0438 \u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u043c\u0438 \u043d\u0430\u0434 \u043d\u0438\u043c\u0438 \u0434\u043b\u044f \u0438\u0437\u0431\u0435\u0436\u0430\u043d\u0438\u044f \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0432 \u043a\u043e\u0434\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u00a0<code>Email<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u0432 \u043e\u0431\u044b\u0447\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443, \u043d\u043e \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u043e\u043b\u0435\u0439 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0447\u0435\u043c\u0443 \u043d\u0435\u043b\u044c\u0437\u044f \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0433\u0434\u0435-\u0442\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u0441\u0442\u0440\u043e\u043a\u0438, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0439 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0443\u044e \u043f\u043e\u0447\u0442\u0443, \u043b\u044e\u0431\u0443\u044e \u0434\u0440\u0443\u0433\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443. \u0410 \u0442\u0430\u043a\u0436\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0442\u0438\u043f\u0430\u00a0<code>Email<\/code>\u00a0(\u0430 \u043d\u0435 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0442\u0440\u043e\u043a). \u0418 \u0431\u043e\u043d\u0443\u0441 \u0441\u0432\u0435\u0440\u0445\u0443: \u043d\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e. \u0420\u0430\u0437\u0432\u0435 \u043d\u0435 \u0437\u0434\u043e\u0440\u043e\u0432\u043e?<\/p>\n<p>\u0421\u0430\u043c\u043e \u0441\u043e\u0431\u043e\u0439, \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043e\u0432 \u0432 \u044f\u0437\u044b\u043a\u0435\u00a0<em>Haxe<\/em>. \u041d\u043e, \u043a\u0440\u043e\u043c\u0435 \u043d\u0435\u0433\u043e, \u0435\u0441\u0442\u044c \u043a\u0443\u0447\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439: \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0434\u043b\u044f \u043d\u0430\u0448\u0438\u0445 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043e\u0432, \u0433\u0435\u0442\u0442\u0435\u0440\u043e\u0432\/\u0441\u0435\u0442\u0442\u0435\u0440\u043e\u0432, \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b; \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430 \u0434\u043b\u044f \u044f\u0432\u043d\u043e\u0433\u043e \u0438 \u043d\u0435\u044f\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0437 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0432 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442 \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e; \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435\u043c. \u0412\u0441\u0435 \u044d\u0442\u043e \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u043a\u0440\u0443\u0442\u044b\u0435 \u0432\u0435\u0449\u0438 \u0432\u00a0<em>Haxe<\/em>.<\/p>\n<p>\u0411\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0441\u043c\u044b\u0441\u043b\u0430 \u0443\u0433\u043b\u0443\u0431\u043b\u044f\u0442\u044c\u0441\u044f \u0432 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u044f\u0437\u044b\u043a\u0430\u00a0<em>Haxe<\/em>\u00a0\u0434\u043b\u044f \u043d\u0430\u0441 \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0435\u0442. \u041d\u0430\u043c\u043d\u043e\u0433\u043e \u0431\u043e\u043b\u0435\u0435 \u0432\u0430\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0447\u0435\u0433\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u044b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u0440\u0430\u0437\u0443 \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c.<\/p>\n<p>\u041a\u0430\u043a \u0443\u0436\u0435 \u0432\u044b\u0448\u0435 \u0431\u044b\u043b\u043e \u0441\u043a\u0430\u0437\u0430\u043d\u043e,\u00a0<em>Haxe<\/em>\u00a0\u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434 \u0440\u0430\u0437\u043d\u044b\u0435 \u044f\u0437\u044b\u043a\u0438 \u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b. \u0410 \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0447\u044c \u0437\u0430\u0445\u043e\u0434\u0438\u0442 \u043e \u043c\u043d\u043e\u0433\u043e\u043e\u0431\u0440\u0430\u0437\u0438\u0438, \u0442\u043e \u0441\u0440\u0430\u0437\u0443 \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442\u044b \u043d\u0435\u0441\u043e\u0441\u0442\u044b\u043a\u043e\u0432\u043a\u0438. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0447\u0442\u043e \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043c\u043e\u0436\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u0434\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435; \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043e\u043d\u0430 \u0435\u0441\u0442\u044c \u0432 \u0434\u0440\u0443\u0433\u043e\u043c. \u0412 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0437\u0430\u0434\u0430\u0447\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 &#8212; \u043a\u0430\u043a-\u0442\u043e \u0432\u0441\u0435 \u044d\u0442\u043e \u0434\u0435\u043b\u043e \u044d\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440: \u0432 \u044f\u0437\u044b\u043a\u0435\u00a0<em>Haxe<\/em>\u00a0\u0435\u0441\u0442\u044c \u0442\u0438\u043f\u00a0<code>UInt<\/code>\u00a0&#8212; \u0431\u0435\u0437\u0437\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u0446\u0435\u043b\u043e\u0435. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e\u0431\u044b \u043c\u044b \u043c\u043e\u0433\u043b\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u044f\u0437\u044b\u043a\u0438 \u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043b\u0438\u0431\u043e \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0442\u0438\u043f\u0430 \u0432 \u0446\u0435\u043b\u0435\u0432\u043e\u043c \u044f\u0437\u044b\u043a\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u00a0<em>C#<\/em>\u00a0\u0442\u0430\u043a\u043e\u0439 \u0442\u0438\u043f \u0435\u0441\u0442\u044c &#8212;\u00a0<code>uint<\/code>), \u043b\u0438\u0431\u043e \u044d\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u00a0<em>Java<\/em>\u00a0\u0442\u0430\u043a\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u043d\u0435\u0442). \u0418 \u0432\u043e\u0442 \u0434\u043b\u044f \u0442\u0430\u043a\u043e\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u044f \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d (\u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b, \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f) \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044d\u0442\u0438\u043c \u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f. \u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u044d\u0442\u043e \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cs\">@:transitive abstract UInt(Int) from Int to Int {     @:op(A + B) private static inline function add(a:UInt, b:UInt):UInt {         return a.toInt() + b.toInt();     }      @:op(A \/ B) private static inline function div(a:UInt, b:UInt):Float {         return a.toFloat() \/ b.toFloat();     }      @:op(A * B) private static inline function mul(a:UInt, b:UInt):UInt {         return a.toInt() * b.toInt();     }      @:op(A - B) private static inline function sub(a:UInt, b:UInt):UInt {         return a.toInt() - b.toInt();     }      @:op(A > B)     private static #if !js inline #end function gt(a:UInt, b:UInt):Bool {         var aNeg = a.toInt() &lt; 0;         var bNeg = b.toInt() &lt; 0;         return if (aNeg != bNeg) aNeg; else a.toInt() > b.toInt();     }      @:op(A >= B)     private static #if !js inline #end function gte(a:UInt, b:UInt):Bool {         var aNeg = a.toInt() &lt; 0;         var bNeg = b.toInt() &lt; 0;         return if (aNeg != bNeg) aNeg; else a.toInt() >= b.toInt();     }  \/\/ ... }<\/code><\/pre>\n<p>\u042d\u0442\u043e\u0442 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u043f\u043e\u0432\u0435\u0440\u0445 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430\u00a0<code>Int<\/code>. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0435\u0433\u043e \u043d\u0430\u043b\u0438\u0447\u0438\u044e, \u0431\u0435\u0437\u0437\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u0446\u0435\u043b\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445, \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0445 \u044d\u0442\u043e\u0442 \u0442\u0438\u043f. \u041f\u0440\u0438\u0447\u0435\u043c, \u0437\u0430\u043c\u0435\u0442\u044c\u0442\u0435, \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e \u0438 \u0441 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e. \u042d\u0442\u043e \u043a\u0430\u043a \u0440\u0430\u0437 \u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439\u00a0<em>zero cost abstraction<\/em>\u00a0\u0432 \u0434\u0435\u043b\u0435.<\/p>\n<p>\u0415\u0449\u0435 \u043e\u0434\u0438\u043d \u044f\u0440\u043a\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043e\u0432. \u0412\u0441\u0435 \u043c\u044b \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u0432\u043e \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0435\u00a0<em>Flutter<\/em>\u00a0\u0435\u0441\u0442\u044c \u043a\u043b\u0430\u0441\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0446\u0432\u0435\u0442 &#8212;\u00a0<code>Color<\/code>. \u041f\u043e \u0441\u0432\u043e\u0435\u0439 \u0441\u0443\u0442\u0438 \u0446\u0432\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439\u00a0<em>32<\/em>&#8212; \u0431\u0438\u0442\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435\u00a0<em>ARGB<\/em>. \u0413\u0434\u0435\u00a0<em>A<\/em>\u00a0&#8212; \u044d\u0442\u043e\u00a0<em>Alpha<\/em>\u00a0&#8212; \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c, \u0430\u00a0<em>RGB<\/em>\u00a0\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u00a0<em>Red<\/em>,\u00a0<em>Green<\/em>\u00a0\u0438\u00a0<em>Blue<\/em>. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0446\u0432\u0435\u0442\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u0438\u043f\u0430\u00a0<code>int<\/code>, \u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u0438\u00a0<em>Flutter<\/em>\u00a0\u0440\u0435\u0448\u0438\u043b\u0438, \u0447\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0442\u0438\u043f-\u043e\u0431\u0435\u0440\u0442\u043a\u0430 \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u044d\u0442\u0438\u0445 \u0446\u0435\u043b\u0435\u0439. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0441 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u044d\u0442\u043e \u0442\u0438\u043f\u043e\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0446\u0432\u0435\u0442\u0430\u043c\u0438, \u0430 \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 &#8212; \u044d\u0442\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0442\u0435\u0440\u044f \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0435\u0441\u043b\u0438 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0446\u0432\u0435\u0442\u0430\u043c\u0438 (\u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438) \u0432\u00a0<em>run-time<\/em>. \u041d\u043e \u0435\u0441\u043b\u0438 \u0431\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438\u00a0<em>Flutter<\/em>\u00a0\u0438\u043c\u0435\u043b\u0438 \u0432 \u0441\u0432\u043e\u0435\u043c \u0430\u0440\u0441\u0435\u043d\u0430\u043b\u0435 \u0442\u0430\u043a\u0443\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043a\u0430\u043a \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u044b \u0438\u0437\u00a0<em>Haxe<\/em>, \u0442\u043e \u043e\u043d\u0438 \u0435\u044e \u043d\u0435\u043f\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0431\u044b (\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u044d\u0442\u043e \u0434\u0430\u0436\u0435 \u043a\u043e\u0433\u0434\u0430-\u043d\u0438\u0431\u0443\u0434\u044c \u0441\u043b\u0443\u0447\u0438\u0442\u0441\u044f). \u0412\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u043e \u0431\u044b \u044d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cs\">\/**  * ARGB color type based on a 32-bit integer.  *\/ abstract Color(Int) from Int to Int {   \/**    * Predefined color constants for common colors.    *\/   public static inline var TRANSPARENT : Color = 0x00000000;   public static inline var BLACK : Color = 0xff000000;   public static inline var WHITE : Color = 0xffffffff;   public static inline var RED : Color = 0xffff0000;   public static inline var GREEN : Color = 0xff00ff00;   public static inline var BLUE : Color = 0xff0000ff;   public static inline var CYAN : Color = 0xff00ffff;   public static inline var MAGENTA : Color = 0xffff00ff;   public static inline var YELLOW : Color = 0xffffff00;      \/**    * Performs implicit casting from an ARGB hex string to a color.    * @param   argb  ARGB hex string    * @return  Color based on hex string    *\/   @:from public static inline function fromString(argb : String) : Color {     return new Color(Std.parseInt(argb));   }      \/**    * Creates a new color from integer color components.    * @param   a   Alpha channel value    * @param   r   Red channel value    * @param   g   Green channel value    * @param   b   Blue channel value    * @return  Color based on color components    *\/   public static inline function fromARGBi(a : Int, r : Int, g : Int, b : Int) : Color {     return new Color((a &lt;&lt; 24) | (r &lt;&lt; 16) | (g &lt;&lt; 8) | b);   }      \/**    * Creates a new color from floating point color components.    * @param   a   Alpha channel value    * @param   r   Red channel value    * @param   g   Green channel value    * @param   b   Blue channel value    * @return  Color based on color components    *\/   public static inline function fromARGBf(a : Float, r : Float, g : Float, b : Float) : Color {     return fromARGBi(Std.int(a * 255), Std.int(r * 255), Std.int(g * 255), Std.int(b * 255));   }      \/**    * Constructs a new color.    * @param   argb  Color formatted as ARGB integer    *\/   inline function new(argb : Int) this = argb;      \/**    * Integer color channel getters and setters.    *\/    public var ai(get, set) : Int;   inline function get_ai() return (this >> 24) &amp; 0xff;   inline function set_ai(ai : Int) { this = fromARGBi(ai, ri, gi, bi); return ai; }      public var ri(get, set) : Int;   inline function get_ri() return (this >> 16) &amp; 0xff;   inline function set_ri(ri : Int) { this = fromARGBi(ai, ri, gi, bi); return ri; }      public var gi(get, set) : Int;   inline function get_gi() return (this >> 8) &amp; 0xff;   inline function set_gi(gi : Int) { this = fromARGBi(ai, ri, gi, bi); return gi; }      public var bi(get, set) : Int;   inline function get_bi() return this &amp; 0xff;   inline function set_bi(bi : Int) { this = fromARGBi(ai, ri, gi, bi); return bi; }      \/**    * Floating point color channel getters and setters.    *\/    public var af(get, set) : Float;   inline function get_af() return ai \/ 255;   inline function set_af(af : Float) { this = fromARGBf(af, rf, gf, bf); return af; }      public var rf(get, set) : Float;   inline function get_rf() return ri \/ 255;   inline function set_rf(rf : Float) { this = fromARGBf(af, rf, gf, bf); return rf; }      public var gf(get, set) : Float;   inline function get_gf() return gi \/ 255;   inline function set_gf(gf : Float) { this = fromARGBf(af, rf, gf, bf); return gf; }      public var bf(get, set) : Float;   inline function get_bf() return bi \/ 255;   inline function set_bf(bf : Float) { this = fromARGBf(af, rf, gf, bf); return bf; } }<\/code><\/pre>\n<p>\u0410 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u044d\u0442\u043e\u0442 \u0442\u0438\u043f \u043c\u0430\u043b\u043e \u0432 \u0447\u0435\u043c \u043e\u0442\u043b\u0438\u0447\u0430\u043b\u0441\u044f \u0431\u044b \u043e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430-\u043e\u0431\u0435\u0440\u0442\u043a\u0438:<\/p>\n<pre><code class=\"cs\">\/\/ Use a predefined color var red : Color = Color.RED;  \/\/ Use a custom color var fromInt : Color = 0x98765432; var fromString : Color = \"0xffeeddcc\"; var fromIntComponents : Color = Color.fromARGBi(255, 125, 100, 50); var fromFloatComponents : Color = Color.fromARGBf(1.0, 0.3, 0.7, 0.2);  \/\/ Access color channels fromIntComponents.ri = red.ri; fromString.af = 1.0;  \/\/ Print out the hex values trace(StringTools.hex(red)); trace(StringTools.hex(fromInt)); trace(StringTools.hex(fromString)); trace(StringTools.hex(fromIntComponents)); trace(StringTools.hex(fromFloatComponents));<\/code><\/pre>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432\u043e\u0442 \u0442\u0430\u043a \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442, \u0435\u0441\u043b\u0438 \u0435\u0433\u043e \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u00a0<em>JS<\/em>:<\/p>\n<pre><code class=\"javascript\">var red = -65536; var fromInt = -1737075662; var fromString = Std.parseInt(\"0xffeeddcc\"); var fromIntComponents = -8559566; var fromFloatComponents = (255. | 0) &lt;&lt; 24 | (76.5 | 0) &lt;&lt; 16 | (178.5 | 0) &lt;&lt; 8 | (51. | 0); fromIntComponents = -39886; fromString = (255. | 0) &lt;&lt; 24 | ((fromString >> 16 &amp; 255) \/ 255 * 255 | 0) &lt;&lt; 16 | ((fromString >> 8 &amp; 255) \/ 255 * 255 | 0) &lt;&lt; 8 | ((fromString &amp; 255) \/ 255 * 255 | 0); console.log(StringTools.hex(red)); console.log(StringTools.hex(fromInt)); console.log(StringTools.hex(fromString)); console.log(StringTools.hex(fromIntComponents)); console.log(StringTools.hex(fromFloatComponents));<\/code><\/pre>\n<p>\u041a\u0430\u043a \u043d\u0435\u0442\u0440\u0443\u0434\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432, \u0432\u0441\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0437\u0430\u0438\u043d\u043b\u0430\u0439\u043d\u0435\u043d\u044b, \u0438 \u0432\u0441\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e. \u0420\u0430\u0437\u0432\u0435 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e? \u0422\u0430\u043a\u0430\u044f \u043f\u0440\u043e\u0441\u0442\u0430\u044f (\u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0448\u044c\u0441\u044f \u043f\u043e\u0431\u043b\u0438\u0436\u0435) \u0438\u0434\u0435\u044f \u0438 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0449\u043d\u0430\u044f. \u041f\u043e\u0447\u0435\u043c\u0443 \u0436\u0435 \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0435 \u0442\u0430\u043a \u043c\u043d\u043e\u0433\u043e\u00a0<em>\u042f\u041f<\/em>\u00a0\u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u0435\u0435? \u0418 \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0432\u043e\u043f\u0440\u043e\u0441.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/bee\/f15\/95f\/beef1595faa0d72c60b61fa967571b11.jpeg\" alt=\"I robot meme: this is the right question\" width=\"500\" height=\"500\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/bee\/f15\/95f\/beef1595faa0d72c60b61fa967571b11.jpeg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption>I robot meme: this is the right question<\/figcaption><\/div>\n<\/figure>\n<p>\u041c\u044b \u0432\u044b\u0448\u0435 \u0443\u0436\u0435 \u043a\u0440\u0430\u0442\u0435\u043d\u044c\u043a\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u00a0<code>Email<\/code>. \u041d\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0449\u0435 \u043b\u0443\u0447\u0448\u0435. \u041c\u043e\u0436\u043d\u043e \u0437\u0430\u0432\u0435\u0441\u0442\u0438 \u0434\u0432\u0430 \u0442\u0438\u043f\u0430:\u00a0<code>UncomfirmedEmail<\/code>\u00a0\u0438\u00a0<code>ConfirmedEmail<\/code>, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0447\u0435\u043c\u0443 \u043d\u0430 \u043a\u043e\u0440\u043d\u044e \u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043a \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u043c \u0441 \u043d\u0435\u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u043d\u044b\u043c \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u044b\u043c \u0430\u0434\u0440\u0435\u0441\u043e\u043c. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u043c\u0435\u0442\u043e\u0434\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u0442\u0438\u043f\u043e\u043c \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b, \u0430 \u0443\u0436\u0435 \u043e \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0437\u0430\u0431\u043e\u0442\u0438\u0442\u0441\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0442\u0438\u043f\u043e\u0432 \u044f\u0437\u044b\u043a\u0430. \u041e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0435 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0438 \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0433\u0434\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, (\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f)\u00a0<a href=\"https:\/\/fsharpforfunandprofit.com\/posts\/designing-with-types-making-illegal-states-unrepresentable\/\" rel=\"noopener noreferrer nofollow\"><em>Designing with types: Making illegal states unrepresentable<\/em><\/a>, \u0438\u043b\u0438 \u0432 \u043a\u043d\u0438\u0433\u0435\u00a0<a href=\"https:\/\/www.amazon.com\/Domain-Modeling-Made-Functional-Domain-Driven\/dp\/1680502549\" rel=\"noopener noreferrer nofollow\"><em>Domain Modeling Made Functional<\/em><\/a>\u00a0\u043e\u0442 \u0442\u043e\u0433\u043e \u0436\u0435 \u0430\u0432\u0442\u043e\u0440\u0430. \u041d\u0430 \u0445\u0430\u0431\u0440\u0435 \u0435\u0441\u0442\u044c\u00a0<a href=\"https:\/\/habr.com\/ru\/articles\/424895\/\" rel=\"noopener noreferrer nofollow\">\u043f\u0435\u0440\u0435\u0432\u043e\u0434<\/a>\u00a0\u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438. \u0415\u0449\u0435 \u043e\u0434\u0438\u043d \u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u0442\u0430\u0442\u044c\u0438 &#8212;\u00a0<a href=\"https:\/\/lexi-lambda.github.io\/blog\/2019\/11\/05\/parse-don-t-validate\/\" rel=\"noopener noreferrer nofollow\"><em>Parse, don&#8217;t validate<\/em><\/a>, \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c\u00a0<a href=\"https:\/\/habr.com\/ru\/articles\/498042\/\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u0422\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c \u0438 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u043d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a\u00a0<a href=\"https:\/\/habr.com\/ru\/articles\/428051\/\" rel=\"noopener noreferrer nofollow\">\u044d\u0442\u0430<\/a>. \u041d\u0430 \u043c\u043e\u0439 \u0441\u043a\u0440\u043e\u043c\u043d\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u044b \u043e\u0447\u0435\u043d\u044c \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u043b\u043e\u0436\u0430\u0442\u0441\u044f \u043d\u0430 \u044d\u0442\u0443 \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0438\u0437\u0431\u0430\u0432\u043b\u044f\u044e\u0442 \u043e\u0442 \u0441\u043e\u043f\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u0432\u044b\u0437\u0432\u0430\u043d\u043d\u044b\u0445 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0447\u0430\u0441\u0442\u044b\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043a\u043b\u0430\u0441\u0441\u043e\u0432-\u043e\u0431\u0435\u0440\u0442\u043e\u043a.<\/p>\n<h3>Units of measure in F#<\/h3>\n<p>\u041d\u0435\u0432\u043e\u043e\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u043c \u0433\u043b\u0430\u0437\u043e\u043c \u0432\u0438\u0434\u043d\u043e, \u043a\u0430\u043a \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u044f\u0437\u044b\u043a\u0438 \u043f\u043e \u0442\u0435\u043c \u0438\u043b\u0438 \u0438\u043d\u044b\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c \u0438\u0434\u0443\u0442 \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0441\u0442\u0440\u043e\u0433\u043e\u0439 \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u0438 (\u043d\u0443, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0445 \u043f\u0440\u0438\u0440\u043e\u0434\u0430 \u0432\u043e\u043e\u0431\u0449\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c: \u043e\u0434\u043d\u0438 \u0438\u0434\u0443\u0442, \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043e\u043b\u0437\u0443\u0442, \u043d\u0443 \u0430 \u043a\u0442\u043e-\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u0432 \u044d\u0442\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438). \u0414\u0430\u043b\u0435\u043a\u043e \u0437\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 \u0445\u043e\u0434\u0438\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e:<\/p>\n<ul>\n<li>\n<p>\u0443 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e, \u043d\u043e \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e\u00a0<em>JS<\/em>\u00a0\u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0441\u0432\u043e\u0434\u043d\u044b\u0439 \u0431\u0440\u0430\u0442\u00a0<em>TS<\/em>;<\/p>\n<\/li>\n<li>\n<p>\u0432\u00a0<em>PHP<\/em>\u00a0\u0431\u044b\u043b\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0442\u0438\u043f\u044b;<\/p>\n<\/li>\n<li>\n<p>\u043d\u0430\u0448 \u043b\u044e\u0431\u0438\u043c\u044b\u0439\u00a0<em>Dart<\/em>\u00a0\u0441\u043c\u0435\u043d\u0438\u043b \u043c\u043e\u0434\u0435\u043b\u044c \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u0438, \u0447\u0442\u043e \u044f\u0432\u043d\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0442\u0440\u0430\u0437\u0438\u043b\u043e\u0441\u044c \u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0441\u0442\u0430\u043b\u043e \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u043f\u0440\u0438\u0447\u0438\u043d \u0435\u0433\u043e \u043d\u043e\u0432\u043e\u0439 \u0436\u0438\u0437\u043d\u0438 (\u043a\u0441\u0442\u0430\u0442\u0438, \u0435\u0441\u043b\u0438 \u0431\u044b \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e, \u0438 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0431\u044b \u043d\u0435 \u0431\u044b\u043b\u043e).<\/p>\n<\/li>\n<\/ul>\n<p>\u0421\u0430\u043c\u043e \u0441\u043e\u0431\u043e\u0439, \u0443 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0438 \u043f\u043b\u044e\u0441\u044b \u0438 \u0441\u0432\u043e\u044f \u043d\u0438\u0448\u0430, \u0441 \u044d\u0442\u0438\u043c \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0441\u043f\u043e\u0440\u0438\u0442. \u041d\u043e \u0438 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u044c \u043f\u043b\u044e\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u0433\u0430\u044f \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u044f, \u043d\u0435 \u043d\u0443\u0436\u043d\u043e. \u041d\u0435\u0442\u0440\u0443\u0434\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u043d\u043e\u0432\u044b\u0435 \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u0444\u0438\u0447\u0438 \u0432 \u043c\u0435\u0439\u043d\u0441\u0442\u0440\u0438\u043c-\u044f\u0437\u044b\u043a\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432, \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u043c\u0435\u044e\u0442 \u0441\u0442\u0440\u043e\u0433\u0443\u044e \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u044e. \u041d\u0430\u0438\u0431\u0430\u043d\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b:<\/p>\n<ul>\n<li>\n<p>\u0432\u0441\u0435 (\u0438\u043b\u0438 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435) \u043c\u0435\u0439\u043d\u0441\u0442\u0440\u0438\u043c-\u044f\u0437\u044b\u043a\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u044b\u0441\u0448\u0438\u0445 \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432, \u0430\u043d\u043e\u043d\u0438\u043c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f (\u0434\u0430\u0436\u0435\u00a0<em>Java<\/em>);<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441 \u043e\u0431\u0440\u0430\u0437\u0446\u043e\u043c (<em>Pattern Matching<\/em>) &#8212; \u0438\u0441\u043a\u043e\u043d\u043d\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u044b\u0441\u0442\u0440\u044b\u043c\u0438 \u0448\u0430\u0433\u0430\u043c\u0438 \u043a\u043e\u0447\u0443\u0435\u0442 \u0432 \u043c\u0435\u0439\u043d\u0441\u0442\u0440\u0438\u043c \u0441\u0435\u0433\u043c\u0435\u043d\u0442;<\/p>\n<\/li>\n<li>\n<p>\u0430\u043b\u0433\u0435\u0431\u0440\u0430\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0442\u0438\u043f\u044b: \u0442\u0438\u043f\u044b \u0441\u0443\u043c\u043c \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0439 (<em>Algebraic Data Types<\/em>,\u00a0<em>ADT<\/em>);<\/p>\n<\/li>\n<li>\n<p>\u043e\u0431\u043e\u0431\u0449\u0435\u043d\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 (<em>Generics<\/em>);<\/p>\n<\/li>\n<li>\n<p>\u0438\u043c\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c (\u043d\u0435\u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u043e\u0441\u0442\u044c) \u0438 \u0438\u043c\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0432 \u0446\u0435\u043b\u043e\u043c;<\/p>\n<\/li>\n<li>\n<p>\u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0430\u0445\u0430\u0440 \u0434\u043b\u044f \u043c\u043e\u043d\u0430\u0434\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 (<code>async\/await<\/code>,\u00a0<code>.?\/??<\/code>,\u00a0<em>Null safety<\/em>);<\/p>\n<\/li>\n<li>\n<p>\u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435&#8230;<\/p>\n<\/li>\n<\/ul>\n<p>\u041c\u043e\u0436\u043d\u043e \u0434\u0430\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u044b\u0432\u043e\u0434, \u0447\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u044f\u0437\u044b\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u0440\u043e\u0434\u0430 \u043a\u0443\u0437\u043d\u0438\u0446\u0435\u0439 \u0444\u0438\u0447, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u0435\u0439\u043d\u0441\u0442\u0440\u0438\u043c\u00a0<em>\u042f\u041f<\/em>\u00a0\u0447\u0435\u0440\u043f\u0430\u044e\u0442 (\u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0447\u0435\u0441\u0442\u043d\u043e, \u043d\u0435 \u0441\u043a\u0440\u044b\u0432\u0430\u044f, \u0437\u0430\u0438\u043c\u0441\u0442\u0432\u0443\u044e\u0442) \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u0435\u043d\u0438\u0435. \u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0435 \u0431\u044b\u0441\u0442\u0440\u044b\u0439, \u0434\u0430 \u0438 \u0441\u0430\u043c &#171;\u043f\u043b\u0430\u0433\u0438\u0430\u0442&#187; \u043d\u043e\u0441\u0438\u0442 \u0432\u043f\u043e\u043b\u043d\u0435 \u0446\u0438\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440. \u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u043d\u043e\u0432\u044b\u0435 \u0444\u0438\u0447\u0438 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u0438\u043c\u0441\u0442\u0432\u0443\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u0435\u0441\u0442\u044c, \u0430 &#171;\u043e\u0431\u0442\u0430\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f&#187; \u043f\u043e\u0434 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0440\u0435\u0430\u043b\u0438\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432; \u0438\u043d\u043e\u0433\u0434\u0430 \u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0444\u0438\u0447\u0438 \u0434\u0430\u0436\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442\u0441\u044f &#171;\u043c\u043e\u0449\u043d\u0435\u0435&#187; \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0430. \u0414\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445 \u043d\u0435 \u0441\u0435\u043a\u0440\u0435\u0442, \u0447\u0442\u043e \u044f\u0437\u044b\u043a\u00a0<em>F#<\/em>\u00a0&#8212; \u044d\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439\u00a0<em>\u042f\u041f<\/em>\u00a0\u043e\u0442\u00a0<em>Microsoft<\/em>, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043e\u0431\u043a\u0430\u0442\u043a\u0430 \u0442\u0435\u0445 \u0438\u043b\u0438 \u0438\u043d\u044b\u0445 \u0438\u0434\u0435\u0439. \u0410 \u0443\u0436\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0437\u0436\u0435 \u0441\u0430\u043c\u044b\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u0438\u0434\u0435\u0438 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u0432 \u043c\u0435\u0439\u043d\u0441\u0442\u0440\u0438\u043c\u043d\u044b\u0439\u00a0<em>C#<\/em>. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0435\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u0437\u043d\u0430\u0442\u044c \u0441 \u0447\u0435\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0437\u0430\u0432\u0442\u0440\u0430, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0447\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u044f\u0437\u044b\u043a\u0438 \u0443\u043c\u0435\u044e\u0442 \u0443\u0436\u0435 \u0441\u0435\u0433\u043e\u0434\u043d\u044f.<\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0435\u0449\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043e\u0434\u043d\u0443 \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u0444\u0438\u0447 \u044f\u0437\u044b\u043a\u0430\u00a0<em>F#<\/em>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u0441\u043c\u043e\u0433\u043b\u0430 \u0441\u043f\u0430\u0441\u0442\u0438 \u0441\u0430\u043c\u044b\u0439 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0438 \u0436\u0443\u0442\u043a\u043e \u0434\u043e\u0440\u043e\u0433\u0443\u0449\u0438\u0439 \u043a\u043e\u0441\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043e\u0440\u0430\u0431\u043b\u044c \u043e\u0442 \u043a\u0440\u0443\u0448\u0435\u043d\u0438\u044f. \u0410 \u0437\u0430\u043e\u0434\u043d\u043e \u0437\u0430\u0434\u0430\u0434\u0438\u043c\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c: \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043b\u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0432\u00a0<em>C#<\/em>?<\/p>\n<p>\u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e \u0441\u043b\u0443\u0447\u0438\u0432\u0448\u0435\u043c\u0441\u044f \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c\u00a0<a href=\"https:\/\/www.simscale.com\/blog\/nasa-mars-climate-orbiter-metric\/\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u0415\u0441\u043b\u0438 \u0432\u043a\u0440\u0430\u0442\u0446\u0435, \u0442\u043e \u043a\u043e\u0441\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043e\u0440\u0430\u0431\u043b\u044c \u0441\u0433\u043e\u0440\u0435\u043b \u0438\u0437-\u0437\u0430 \u043d\u0435\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u0435\u0434\u0438\u043d\u0438\u0446 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f. \u041d\u0430\u0434 \u044d\u0442\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u043c\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u0430\u043d\u0434. \u0418 \u0432\u043e\u0442 \u043e\u0434\u043d\u0430 \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0432 \u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0432 \u043c\u0435\u0442\u0440\u0430\u0445, \u043c\u0438\u043b\u043b\u0438\u043c\u0435\u0442\u0440\u0430\u0445 \u0438 \u043a\u0438\u043b\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0445. \u0410 \u0434\u0440\u0443\u0433\u0430\u044f &#8212; \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0438\u043c\u043f\u0435\u0440\u0438\u0430\u043b \u0441 \u0434\u044e\u0439\u043c\u0430\u043c\u0438, \u0444\u0443\u0442\u0430\u043c\u0438 \u0438 \u0444\u0443\u043d\u0442\u0430\u043c\u0438. \u0414\u0430\u043b\u0435\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0432\u0441\u0435 \u043f\u043b\u044e\u0441-\u043c\u0438\u043d\u0443\u0441 \u043f\u043e\u043d\u044f\u0442\u043d\u043e. \u041e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043b\u0438\u0448\u044c \u043e\u0434\u0438\u043d \u0432\u043e\u043f\u0440\u043e\u0441: \u0430 \u0447\u0435\u043c \u0431\u044b \u043d\u0430\u043c \u0437\u0434\u0435\u0441\u044c \u043c\u043e\u0433 \u043f\u043e\u043c\u043e\u0447\u044c\u00a0<em>F#<\/em>?<\/p>\n<p>\u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439\u00a0<em>F#<\/em>\u00a0\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f (<em>Units of measure<\/em>). \u041f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u043a\u043e\u0434 \u043d\u0430\u00a0<em>F#<\/em>\u00a0\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0442\u0438\u043f\u043e\u0432. \u042d\u0442\u0438 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0437\u0430\u0434\u0430\u0442\u044c \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f. \u041f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"fsharp\">[&lt;Measure>] type m; [&lt;Measure>] type s;  let distance = 100.0&lt;m>; let time = 5.0&lt;s>; let speed = distance \/ time; \/\/ float&lt;m\/s><\/code><\/pre>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0442\u0430\u0434\u0430\u0442\u044b\u00a0<code>[&lt;Measure>]<\/code>\u00a0\u0438 \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430\u00a0<code>type<\/code>\u00a0\u043c\u044b \u043e\u0431\u044a\u044f\u0432\u0438\u043b\u0438 \u0434\u0432\u0435 \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f\u00a0<code>m<\/code>\u00a0&#8212; \u043c\u0435\u0442\u0440\u044b \u0438\u00a0<code>s<\/code>\u00a0&#8212; \u0441\u0435\u043a\u0443\u043d\u0434\u0430. \u0414\u0430\u043b\u0435\u0435 \u0432 \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u044b\u0445 \u0441\u043a\u043e\u0431\u043a\u0430\u0445\u00a0<code>&lt;><\/code>\u00a0\u0437\u0430\u0434\u0430\u0435\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0434\u043b\u044f\u00a0<code>float<\/code>\u00a0\u0442\u0438\u043f\u0430. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u0430\u043a \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0435 \u0432\u0435\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e, \u0430 \u0432\u0435\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0432 \u043c\u0435\u0442\u0440\u0430\u0445. \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0438 \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u0434\u0430\u043d\u043e \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u0430\u043a \u0432\u0435\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e, \u0430 \u043a\u0430\u043a \u0432\u0435\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445. \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0435\u0434\u0438\u043d\u0438\u0446 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442, \u0447\u0442\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u043c\u0435\u0442\u0440\u044b \u043d\u0430 \u0432\u0440\u0435\u043c\u044f, \u0442\u043e \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u044b\u0439 \u0442\u0438\u043f, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u0435\u0442\u0440\u044b \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443.<\/p>\n<p>\u0418, \u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u0430\u043c\u0438 \u0438\u0437\u00a0<em>Haxe<\/em>, \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u0432\u00a0<em>F#<\/em>\u00a0&#8212; \u043d\u0435 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0435 \u0442\u0438\u043f\u044b, \u0430 \u043b\u0438\u0448\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0442\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. \u041d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0442\u0438\u043f\u043e\u0432 \u044d\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u043d\u0435\u043b\u044c\u0437\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0449\u0443\u044e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u043c\u0435\u0442\u0440\u0430\u0445, \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445:<\/p>\n<pre><code class=\"fsharp\">let printSpeed(s: float&lt;m\/s>) = printfn $\"Speed: {s} meters per second\"  print(speed);<\/code><\/pre>\n<p>\u041d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c:<\/p>\n<pre><code>Speed: 20 meters per second<\/code><\/pre>\n<p>\u0410 \u0432\u043e\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043a\u043e\u0434\u0430 \u0443\u0436\u0435 \u043d\u0435 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f:<\/p>\n<pre><code class=\"fsharp\">let printSpeed(s: float&lt;m\/s>) = printfn $\"Speed: {s} meters per second\"  print(distance);<\/code><\/pre>\n<p>\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0441\u044f \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439:<\/p>\n<pre><code>[FS0001] Type mismatch. Expecting a 'float&lt;m\/s>' but given a 'float&lt;m>'     The unit of measure 'm\/s' does not match the unit of measure 'm'<\/code><\/pre>\n<p>\u0421\u0430\u043c\u043e \u0441\u043e\u0431\u043e\u0439, \u043c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u0433\u043b\u0443\u0431\u043b\u044f\u0442\u044c\u0441\u044f \u0432 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430; \u0442\u0430\u043c \u0435\u0441\u0442\u044c \u0435\u0449\u0435 \u0440\u044f\u0434 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439. \u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u0434\u043b\u044f \u043d\u0430\u0441 &#8212; \u044d\u0442\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 (\u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438, \u0442.\u0435. \u044d\u0442\u043e \u0442\u043e\u0436\u0435\u00a0<em>zero cost abstraction<\/em>); \u0438 \u043a\u0430\u043a \u044d\u0442\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f. \u041c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432. \u041d\u0435\u0442\u0440\u0443\u0434\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u044b \u0438\u0437\u00a0<em>Haxe<\/em>\u00a0\u043f\u043e\u0445\u043e\u0436\u0438 \u043d\u0430 \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0438\u0437\u00a0<em>F#<\/em>. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u044d\u0442\u043e \u043d\u0435 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0435 \u0430\u043d\u0430\u043b\u043e\u0433\u0438, \u043d\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0445\u043e\u0436\u0438\u0439 \u043d\u0430 \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u0430\u0445, \u0434\u0443\u043c\u0430\u044e, \u043c\u043e\u0436\u043d\u043e (\u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0448\u0438\u0440\u043e\u043a\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043c\u0430\u043a\u0440\u043e\u0441\u043e\u0432 \u0432\u00a0<em>Haxe<\/em>). \u0414\u0430 \u0438 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u0432 \u0433\u0443\u0433\u043b \u044d\u0442\u043e \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442. \u041f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0434\u0430\u0436\u0435\u00a0<a href=\"https:\/\/github.com\/fponticelli\/thx.unit\" rel=\"noopener noreferrer nofollow\">\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442<\/a>. \u041d\u043e \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043c\u0438 \u0443\u0434\u043e\u0431\u043d\u043e \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f, \u044d\u0442\u043e \u0443\u0436\u0435, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u043e\u043f\u0440\u043e\u0441.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043f\u043e\u0434\u044b\u0442\u043e\u0436\u0438\u0442\u044c, \u0442\u043e, \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0443, \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u044b &#8212; \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u043e\u0449\u043d\u0430\u044f \u0432\u0435\u0449\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u0438\u043c \u043f\u043e \u0434\u0443\u0448\u0435. \u0410 \u0435\u0441\u0442\u044c \u043b\u0438 \u043d\u0435\u0447\u0442\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u044f\u0437\u044b\u043a\u0430\u0445?<\/p>\n<h3>Haskell and newtype<\/h3>\n<p>\u042f\u0437\u044b\u043a\u00a0<em>Haxe<\/em>\u00a0&#8212; \u044d\u0442\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u043e\u043b\u043e\u0434\u043e\u0439 \u044f\u0437\u044b\u043a, \u0438 \u0433\u043b\u0443\u043f\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c, \u0447\u0442\u043e \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u044b &#8212; \u044d\u0442\u043e \u043d\u043e\u0432\u0438\u043d\u043a\u0430. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0438 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u044f\u0437\u044b\u043a\u0430\u0445. \u0410 \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u0442\u0430\u043a, \u0442\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a \u043e\u043d \u0442\u0430\u043c \u0443\u0441\u0442\u0440\u043e\u0435\u043d, \u043a\u0430\u043a\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u0430\u0435\u0442, \u0438 \u0432\u0441\u0435 \u0442\u0430\u043a\u043e\u0435. \u041a\u043e\u0433\u0434\u0430 \u0440\u0435\u0447\u044c \u0437\u0430\u0445\u043e\u0434\u0438\u0442 \u043e \u043a\u0440\u0443\u0442\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u0445 \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u0438, \u0432\u0435\u043b\u0438\u043a\u0430 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u0443\u0436\u0435 \u0431\u044b\u043b\u043e \u0442\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u00a0<em>Haskell<\/em>.\u00a0<em>Haskell<\/em>\u00a0\u0441\u043b\u0430\u0432\u0438\u0442\u0441\u044f \u0441\u0432\u043e\u0438\u043c\u0438 \u0431\u043e\u0433\u0430\u0442\u044b\u043c\u0438 \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438. \u0418, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0432 \u043d\u0435\u043c \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0439 \u0430\u043d\u0430\u043b\u043e\u0433 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043e\u0432.<\/p>\n<p>\u0412\u00a0<em>Haskell<\/em>\u00a0\u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e\u00a0<code>newtype<\/code>\u00a0\u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c (\u043a\u0430\u043a \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u0438\u0437 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f) \u043d\u043e\u0432\u044b\u0439 \u0442\u0438\u043f. \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e\u00a0<code>newtype<\/code>\u00a0\u043c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u0442\u0438\u043f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e. \u042d\u0442\u043e &#8212; \u0441\u0432\u043e\u0435\u0433\u043e \u0440\u043e\u0434\u0430\u00a0<em>Wrapper<\/em>\u00a0&#8212; \u043e\u0431\u0435\u0440\u0442\u043a\u0430.\u00a0<code>newtype<\/code>, \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u044b \u0438\u0437\u00a0<em>Haxe<\/em>,- \u044d\u0442\u043e \u0442\u0438\u043f \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u044d\u0442\u043e \u0442\u043e\u0436\u0435\u00a0<em>zero cost abstraction<\/em>. \u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u0442\u0438\u043f \u0438 \u043d\u043e\u0432\u044b\u0439 \u0442\u0438\u043f, \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e\u00a0<code>newtype<\/code>, \u0431\u0443\u0434\u0443\u0442 \u043e\u0434\u043d\u0438\u043c \u0438 \u0442\u0435\u043c \u0436\u0435 \u0442\u0438\u043f\u043e\u043c \u0432\u00a0<em>run-time<\/em>. \u041d\u043e \u0434\u043b\u044f\u00a0<em>type checker<\/em>\u00a0\u044d\u0442\u043e \u0440\u0430\u0437\u043d\u044b\u0435 \u0442\u0438\u043f\u044b. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0441\u0430\u043c\u043e\u0435 \u0447\u0430\u0441\u0442\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u00a0<code>newtype<\/code>\u00a0&#8212; \u044d\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0442\u0438\u043f\u043e\u0432 (<em>Type Class<\/em>), \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0442\u0438\u043f\u044b \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0445 \u0442\u0438\u043f\u043e\u0432, \u0441 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u043c\u0438, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u044d\u0442\u0438\u0445 \u043d\u043e\u0432\u044b\u0445 \u0442\u0438\u043f\u043e\u0432. \u0418\u0437 \u0442\u0430\u043a\u043e\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043c\u044b \u0447\u0435\u0442\u043a\u043e \u043c\u043e\u0436\u0435\u043c \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0442\u043e, \u043f\u043e \u0441\u0443\u0442\u0438, \u044d\u0442\u043e \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u043e\u0433 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043e\u0432 \u0438\u0437\u00a0<em>Haxe<\/em>. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"haskell\">newtype MyInt = MakeMyInt Int  addMe :: Int -> Int -> Int addMe x y = x + y  myInt :: MyInt myInt = MakeMyInt 12  main :: IO () main =  do putStr \"Sum of x + y = \" print(addMe 10 myInt)<\/code><\/pre>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e\u00a0<code>newtype<\/code>\u00a0\u043c\u044b \u043e\u0431\u044a\u044f\u0432\u0438\u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u0442\u0438\u043f\u00a0<code>MyInt<\/code>\u00a0\u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0442\u0438\u043f\u0430\u00a0<code>Int<\/code>\u00a0\u0438 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430\u00a0<code>MakeMyInt<\/code>. \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u00a0<code>addMe<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0434\u0432\u0430 \u0446\u0435\u043b\u044b\u0445 \u0447\u0438\u0441\u043b\u0430. \u041d\u043e \u0435\u0441\u043b\u0438 \u043c\u044b \u043f\u043e\u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0432 \u043d\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441 \u0442\u0438\u043f\u043e\u043c\u00a0<code>MyInt<\/code>, \u0442\u043e \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443:<\/p>\n<pre><code>error:     \u2022 Couldn't match expected type \u2018Int\u2019 with actual type \u2018MyInt\u2019     \u2022 In the second argument of \u2018addMe\u2019, namely \u2018myInt\u2019       In the first argument of \u2018print\u2019, namely \u2018(addMe 10 myInt)\u2019       In a stmt of a 'do' block: print (addMe 10 myInt)    | 12 | print(addMe 10 myInt)    |                ^^^^^<\/code><\/pre>\n<p>\u0427\u0442\u043e \u043d\u0435 \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f, \u0447\u0442\u043e \u043c\u044b \u0443\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0437\u043d\u0430\u0435\u043c, \u043a\u0430\u043a \u0441\u0435\u0431\u044f \u0432\u0435\u0434\u0443\u0442 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u044b \u0432\u00a0<em>Haxe<\/em>. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432\u00a0<em>Haskell<\/em>\u00a0\u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0437\u00a0<em>Haxe<\/em>\u00a0\u0432\u044b\u0448\u0435. \u0423\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u044f\u0442\u044c\u0441\u044f, \u0447\u0442\u043e\u00a0<code>newtype<\/code>\u00a0&#8212; \u044d\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e\u00a0<em>zero cost abstraction<\/em>, \u043c\u044b \u043b\u0438\u0447\u043d\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u043c, \u043d\u043e \u0435\u0441\u043b\u0438 \u043a\u043e\u043c\u0443-\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0442\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043e\u0431\u044a\u0435\u043c\u043d\u044b\u0439 \u0438 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u0440\u0430\u0437\u0431\u043e\u0440 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c\u00a0<a href=\"https:\/\/habr.com\/ru\/articles\/323526\/\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0447\u0443\u0442\u043e\u0447\u043a\u0443 \u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440. \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0438\u043f \u0434\u043b\u044f \u043d\u0430\u0442\u0443\u0440\u0430\u043b\u044c\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b. \u0418, \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043c\u044b \u043d\u0435 \u0445\u043e\u0442\u0438\u043c &#171;\u043f\u043b\u0430\u0442\u0438\u0442\u044c&#187; \u0437\u0430 \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e. \u0418 \u0432 \u044d\u0442\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0430\u043c \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043c\u043e\u0447\u044c\u00a0<code>newtype<\/code>.<\/p>\n<p>\u041a\u0430\u043a \u0443\u0436\u0435 \u0432\u044b\u0448\u0435 \u0431\u044b\u043b\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e,\u00a0<code>newtype<\/code>\u00a0\u043e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043f\u0430\u0440\u0435 \u0441 \u043a\u043b\u0430\u0441\u0441\u0430\u043c\u0438 \u0442\u0438\u043f\u043e\u0432 (<em>Type Class<\/em>). \u041a\u043b\u0430\u0441\u0441 \u0442\u0438\u043f\u043e\u0432 &#8212; \u044d\u0442\u043e \u0441\u0432\u043e\u0435\u0433\u043e \u0440\u043e\u0434\u0430 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 (\u0441\u043f\u0438\u0441\u043e\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u0439). \u0415\u0441\u043b\u0438 \u0442\u0438\u043f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e \u043a\u043b\u0430\u0441\u0441\u0430 \u0442\u0438\u043f\u043e\u0432, \u0442\u043e \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u0442\u0438\u043f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043a\u043b\u0430\u0441\u0441 \u0442\u0438\u043f\u043e\u0432 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442. \u0417\u0432\u0443\u0447\u0438\u0442, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0441\u043b\u043e\u0436\u043d\u043e, \u043d\u043e \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c, \u0447\u0442\u043e \u043a\u043b\u0430\u0441\u0441\u044b \u0442\u0438\u043f\u043e\u0432 &#8212; \u044d\u0442\u043e \u0430\u043d\u0430\u043b\u043e\u0433 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u0438\u0437\u00a0<em>\u041e\u041e\u041f<\/em>\u00a0\u044f\u0437\u044b\u043a\u043e\u0432.<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0442\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043f\u0440\u0438\u043c\u0435\u0440. \u041d\u0430\u0448\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 &#8212; \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0438\u043f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u043e\u0431\u043e\u0439 \u043d\u0430\u0442\u0443\u0440\u0430\u043b\u044c\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430:<\/p>\n<pre><code class=\"haskell\">newtype Natural = MakeNatural Integer  toNatural               :: Integer -> Natural toNatural x | x &lt; 0     = error \"Can't create negative naturals!\"              | otherwise = MakeNatural x              fromNatural             :: Natural -> Integer fromNatural (MakeNatural i) = i<\/code><\/pre>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u0442\u0438\u043f\u00a0<code>Natural<\/code>\u00a0\u0438 \u043f\u0430\u0440\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0445 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0446\u0435\u043b\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0432 \u043d\u0430\u0442\u0443\u0440\u0430\u043b\u044c\u043d\u044b\u0435 \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e. \u0410 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0448\u0438\u043c\u0438 \u043d\u0430\u0442\u0443\u0440\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0447\u0438\u0441\u043b\u0430\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0432\u0441\u0435\u043c \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u0447\u0438\u0441\u043b\u0430\u043c \u0432\u00a0<em>Haskell<\/em>, \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043b\u0430\u0441\u0441 \u0442\u0438\u043f\u043e\u0432\u00a0<em>Num<\/em>:<\/p>\n<pre><code class=\"haskell\">instance Num Natural where     fromInteger         = toNatural     x + y               = toNatural (fromNatural x + fromNatural y)     x - y               = let r = fromNatural x - fromNatural y in                             if r &lt; 0 then error \"Unnatural subtraction\"                                      else toNatural r     x * y               = toNatural (fromNatural x * fromNatural y)<\/code><\/pre>\n<p>\u0418 \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0448\u0438\u043c\u0438 \u043d\u0430\u0442\u0443\u0440\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0447\u0438\u0441\u043b\u0430\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u043b\u044e\u0431\u044b\u043c\u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043c\u044b \u043d\u0435 \u0432\u0432\u043e\u0434\u0438\u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u0438\u043f, \u0430 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c\u00a0<code>newtype<\/code>. \u042d\u0442\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437\u00a0<em>Haxe<\/em>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u0432\u0438\u0434\u0435\u043b\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e\u00a0<code>UInt<\/code>\u00a0\u043f\u043e\u0432\u0435\u0440\u0445\u00a0<code>Int<\/code>.<\/p>\n<p>\u0412 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0435 \u0435\u0441\u0442\u044c \u0442\u0430\u043a\u043e\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u0435 \u043a\u0430\u043a \u043c\u043e\u043d\u043e\u0438\u0434. \u0417\u0432\u0443\u0447\u0438\u0442 \u0441\u0442\u0440\u0430\u0448\u043d\u043e, \u043d\u043e \u043d\u0430 \u0434\u0435\u043b\u0435 \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u0431\u0438\u043d\u0430\u0440\u043d\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u043d\u0430\u0434 \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u0442\u0438\u043f\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0446\u0435\u043b\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0438\u00a0<em>0<\/em>, \u043a\u0430\u043a \u043d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0442 \u043c\u043e\u043d\u043e\u0438\u0434. \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0441 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u0446\u0435\u043b\u044b\u0445 \u0447\u0438\u0441\u0435\u043b, \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0435\u0434\u0438\u043d\u0438\u0446\u0430. \u0414\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440: \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u043a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0430\u0446\u0438\u0438 \u043d\u0430\u0434 \u0441\u043f\u0438\u0441\u043a\u0430\u043c\u0438 (\u0438 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438) \u0438 \u043f\u0443\u0441\u0442\u043e\u0439 \u0441\u043f\u0438\u0441\u043e\u043a (\u043f\u0443\u0441\u0442\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430) \u0442\u0430\u043a \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0442 \u043c\u043e\u043d\u043e\u0438\u0434. \u041d\u0435\u0441\u043b\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043c\u043e\u043d\u043e\u0438\u0434\u044b \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u0445 \u043d\u0430\u0434 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0442\u0438\u043f\u043e\u043c. \u0412 \u043c\u0435\u0439\u043d\u0441\u0442\u0440\u0438\u043c-\u044f\u0437\u044b\u043a\u0430\u0445 \u0442\u0430\u043a\u0430\u044f \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f \u0440\u0435\u0434\u043a\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u044f\u0432\u043d\u043e, \u0430 \u0432\u043e\u0442 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u0430\u0445 \u043e\u043d\u0430 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0447\u0430\u0449\u0435. \u0412\u00a0<em>Haskell<\/em>\u00a0\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043a\u043b\u0430\u0441\u0441 \u0442\u0438\u043f\u043e\u0432\u00a0<em>Monoid<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u0430\u043a \u0440\u0430\u0437 \u0438 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u044d\u0442\u0443 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044e.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c, \u0447\u0442\u043e \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043b\u0430\u0441\u0441 \u0442\u0438\u043f\u043e\u0432 \u043c\u043e\u043d\u043e\u0438\u0434 \u0434\u043b\u044f \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u0446\u0435\u043b\u044b\u0445 \u0447\u0438\u0441\u0435\u043b. \u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u044d\u0442\u0438\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0442\u0438\u043f\u043e\u0432 \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e. \u0410 \u043a\u0430\u043a \u0431\u044b\u0442\u044c \u0441\u043e \u0432\u0442\u043e\u0440\u044b\u043c? \u0412\u0435\u0434\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0442\u043e\u0433\u043e \u0436\u0435 \u0442\u0438\u043f\u0430 \u0431\u043e\u043b\u0435\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0430 \u043d\u0435\u043b\u044c\u0437\u044f. \u0418 \u0442\u0443\u0442 \u043e\u043f\u044f\u0442\u044c \u043d\u0430 \u0432\u044b\u0440\u0443\u0447\u043a\u0443 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u00a0<code>newtype<\/code>. \u0418 &#8212; \u0432\u0443\u0430\u043b\u044f &#8212; \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0442\u043e\u0433\u043e \u0436\u0435 (\u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435 \u0432\u00a0<em>run-time<\/em>) \u0442\u0438\u043f\u0430. \u041f\u043e \u0441\u0441\u044b\u043b\u043a\u0430\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e\u00a0<a href=\"https:\/\/hackage.haskell.org\/package\/base-4.16.0.0\/docs\/Data-Monoid.html#t:Sum\" rel=\"noopener noreferrer nofollow\"><em>Sum<\/em><\/a>\u00a0\u0438\u00a0<a href=\"https:\/\/hackage.haskell.org\/package\/base-4.16.0.0\/docs\/Data-Monoid.html#t:Product\" rel=\"noopener noreferrer nofollow\"><em>Product<\/em><\/a>\u00a0\u0438 \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0434\u043b\u044f \u0438\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f\u00a0<code>newtype<\/code>. \u0418 \u044d\u0442\u043e &#8212; \u0435\u0449\u0435 \u043e\u0434\u043d\u0430 \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0447\u0430\u0441\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u00a0<code>newtype<\/code>\u00a0\u0432\u00a0<em>Haskell<\/em>. \u0415\u0441\u0442\u044c \u043c\u043d\u0435\u043d\u0438\u0435 (\u043d\u0435 \u0431\u0435\u0437\u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435), \u0447\u0442\u043e\u00a0<code>newtype<\/code>\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0440\u043e\u0439 \u0434\u0430\u0436\u0435 \u0447\u0430\u0449\u0435, \u0447\u0435\u043c\u00a0<code>data<\/code>\u00a0&#8212; \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e \u0434\u043b\u044f \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u0430\u043b\u0433\u0435\u0431\u0440\u0430\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u00a0<em>Haskell<\/em>. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0442\u0438\u043f\u00a0<code>IO<\/code>\u00a0(<em>Input\/Output<\/em>), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0432\u0441\u0435\u043c\u0435\u0441\u0442\u043d\u043e \u0432\u00a0<em>Haskell<\/em>\u00a0\u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u043c\u0438\u0440\u043e\u043c,- \u044d\u0442\u043e \u0442\u043e\u0436\u0435\u00a0<code>newtype<\/code>.<\/p>\n<h3>\u0414\u0440\u0443\u0433\u0438\u0435 \u044f\u0437\u044b\u043a\u0438&#8230;<\/h3>\n<p>\u0410 \u0435\u0441\u0442\u044c \u043b\u0438 \u0435\u0449\u0435 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u00a0<code>abstract<\/code>\u00a0\u0438\u00a0<code>newtype<\/code>\u00a0\u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u044f\u0437\u044b\u043a\u0430\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f? \u041f\u0435\u0440\u0432\u044b\u043c \u043d\u0430 \u0443\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u00a0<em>Rust<\/em>.\u00a0<em>Rust<\/em>, \u044f\u0432\u043b\u044f\u044f\u0441\u044c \u043c\u043e\u043b\u043e\u0434\u044b\u043c, \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0449\u0438\u043c\u0441\u044f \u044f\u0437\u044b\u043a\u043e\u043c, \u0437\u0430\u0438\u043c\u0441\u0442\u0432\u0443\u0435\u0442 \u0445\u043e\u0440\u043e\u0448\u0438\u0435 \u0438\u0434\u0435\u0438 \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432, \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u0438\u0437\u00a0<em>Haskell<\/em>. \u0418 \u043d\u0435\u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e\u00a0<em>Rust<\/em>\u00a0\u0438\u043c\u0435\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b, \u043f\u043e\u0445\u043e\u0436\u0438\u0439 \u043d\u0430\u00a0<code>newtype<\/code>\u00a0\u0438\u0437\u00a0<em>Haskell<\/em>\u00a0\u0438 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u044b \u0438\u0437\u00a0<em>Haxe<\/em>. \u041d\u0435 \u0431\u0443\u0434\u0435\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u044d\u0442\u043e\u043c. \u041d\u0438\u0436\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430\u00a0<em>Rust<\/em>. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0440\u0430\u0441\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0441\u0442\u0440\u043e\u043a\u0443, \u0442\u043e \u043a\u043e\u0434 \u043d\u0435 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f. \u041d\u0443, \u044d\u0442\u043e \u043d\u0430\u043c \u0443\u0436\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0438 \u0437\u043d\u0430\u043a\u043e\u043c\u043e.<\/p>\n<pre><code class=\"rust\">struct Years(i64); struct Days(i64);  impl Years {     pub fn to_days(&amp;self) -> Days {         Days(self.0 * 365)     } }  impl Days {     \/\/\/ truncates partial years     pub fn to_years(&amp;self) -> Years {         Years(self.0 \/ 365)     } }  fn old_enough(age: &amp;Years) -> bool {     age.0 >= 18 }  fn main() {     let age = Years(5);     let age_days = age.to_days();     println!(\"Old enough {}\", old_enough(&amp;age));     println!(\"Old enough {}\", old_enough(&amp;age_days.to_years()));     \/\/ println!(\"Old enough {}\", old_enough(&amp;age_days)); }<\/code><\/pre>\n<p>\u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u044f\u0437\u044b\u043a\u0430\u0445 \u0431\u0435\u0437 \u044f\u0432\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043e\u0432 \u043f\u043e\u0445\u043e\u0436\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0431\u044b\u0432\u0430\u0435\u0442 \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442\u00a0<a href=\"https:\/\/github.com\/estatico\/scala-newtype\" rel=\"noopener noreferrer nofollow\">\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/a>\u00a0<code>newtype<\/code>\u00a0\u0434\u043b\u044f\u00a0<em>Scala<\/em>. \u0418\u043b\u0438 \u0432\u043e\u0442\u00a0<a href=\"https:\/\/github.com\/gcanti\/newtype-ts\" rel=\"noopener noreferrer nofollow\">\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/a>\u00a0\u0434\u043b\u044f\u00a0<em>TypeScript<\/em>. \u041a\u0430\u043a \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u044f\u0437\u044b\u043a\u00a0<em>Go<\/em>\u00a0\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u044d\u0442\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u00a0<a href=\"https:\/\/go.dev\/blog\/laws-of-reflection\" rel=\"noopener noreferrer nofollow\">\u043d\u0430\u0442\u0438\u0432\u043d\u043e<\/a>.\u00a0<em>Kotlin<\/em>\u00a0\u0442\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u0435\u0442\u00a0<a href=\"https:\/\/kotlinlang.org\/docs\/inline-classes.html#inline-classes-and-delegation\" rel=\"noopener noreferrer nofollow\">Inline Classes<\/a>. \u0414\u043b\u044f \u043c\u0435\u043d\u044f \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u0438\u044f\u0442\u043d\u044b\u043c \u0441\u044e\u0440\u043f\u0440\u0438\u0437\u043e\u043c, \u0447\u0442\u043e, \u0432 \u0442\u043e\u0439 \u0438\u043b\u0438 \u0438\u043d\u043e\u0439 \u043c\u0435\u0440\u0435, \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0443\u0441\u043b\u043e\u0432\u043d\u043e \u043c\u0435\u0439\u043d\u0441\u0442\u0440\u0438\u043c-\u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b. \u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u00a0<em>\u0424\u041f<\/em>\u00a0\u044f\u0437\u044b\u043a\u0430\u0445, \u044d\u0442\u043e \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0441\u0430\u043c\u043e \u0441\u043e\u0431\u043e\u0439 \u0440\u0430\u0437\u0443\u043c\u0435\u044e\u0449\u0435\u0435\u0441\u044f. \u041d\u0430\u043b\u0438\u0447\u0438\u0435 \u0438\u043d\u043b\u0430\u0439\u043d-\u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0432\u00a0<em>Kotlin<\/em>\u00a0\u043d\u0430\u0432\u043e\u0434\u0438\u0442 \u043d\u0430 \u043c\u044b\u0441\u043b\u0438, \u0447\u0442\u043e, \u0447\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435\u0435 \u0432\u043b\u0438\u044f\u043d\u0438\u0435\u00a0<em>\u0424\u041f<\/em>\u00a0\u044f\u0437\u044b\u043a\u0438 \u0438\u043c\u0435\u044e\u0442 \u043d\u0430 \u043c\u0435\u0439\u043d\u0441\u0442\u0440\u0438\u043c-\u044f\u0437\u044b\u043a (\u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435\u00a0<em>Rust<\/em>,\u00a0<em>Kotlin<\/em>), \u0442\u0435\u043c \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u044f\u0437\u044b\u043a.<\/p>\n<p>\u0410 \u0437\u043d\u0430\u0435\u0442\u0435 \u043b\u0438 \u0432\u044b, \u0432 \u043a\u0430\u043a\u0438\u0445 \u0435\u0449\u0435 \u044f\u0437\u044b\u043a\u0430\u0445 \u0435\u0441\u0442\u044c \u043d\u0435\u0447\u0442\u043e \u043f\u043e\u0445\u043e\u0436\u0435\u0435? \u0411\u044b\u043b\u043e \u0431\u044b \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043f\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a. \u041f\u0438\u0448\u0438\u0442\u0435 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445. \u0410 \u0435\u0449\u0435 \u0431\u044b\u043b\u043e \u0431\u044b \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0438\u0448\u0435\u0442\u0435 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0441 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u043b\u0438 \u0432\u044b \u0438\u0445 \u0432 \u043f\u043e\u0432\u0441\u0435\u0434\u043d\u0435\u0432\u043d\u043e\u0439 \u0436\u0438\u0437\u043d\u0438? \u0415\u0441\u043b\u0438 \u0434\u0430, \u0431\u044b\u043b\u043e \u0431\u044b \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c, \u0434\u043b\u044f \u043a\u0430\u043a\u0438\u0445 \u0438\u043c\u0435\u043d\u043d\u043e \u0446\u0435\u043b\u0435\u0439.<\/p>\n<h3>Inline classes in Dart<\/h3>\n<p>\u0420\u0430\u0437\u043e\u0431\u0440\u0430\u0432\u0448\u0438\u0441\u044c \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430 \u0434\u043b\u044f \u0442\u0438\u043f\u043e\u0432 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438, \u0441\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e\u0431\u00a0<em>Inline Classes<\/em>. \u0418\u043d\u043b\u0430\u0439\u043d-\u043a\u043b\u0430\u0441\u0441\u044b &#8212; \u044d\u0442\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u0430\u043c \u0438\u00a0<code>newtype<\/code>\u00a0\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b, \u043d\u043e \u0432 \u044f\u0437\u044b\u043a\u0435\u00a0<em>Dart<\/em>. \u0418\u043d\u043b\u0430\u0439\u043d-\u043a\u043b\u0430\u0441\u0441\u044b \u0435\u0449\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u043d\u043e\u00a0<em>proposal<\/em>\u00a0\u043f\u0440\u0438\u043d\u044f\u0442, \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u044d\u0442\u043e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0431\u0443\u0434\u0435\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d, \u0438\u00a0<em>Dart<\/em>\u00a0\u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442 \u0441\u0432\u043e\u0438 \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0435 \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u044d\u0442\u043e \u0432\u0441\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c:<\/p>\n<pre><code class=\"dart\">inline class IdNumber {   final int i;   IdNumber(this.i);    operator &lt;(IdNumber other) => i &lt; other.i;    bool verify(Some parameters) => ...; }<\/code><\/pre>\n<p>\u0411\u0443\u0434\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043d\u043e\u0432\u044b\u0439 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043a\u043b\u0430\u0441\u0441\u043e\u0432\u00a0<code>inline<\/code>\u00a0(\u043f\u043e\u0441\u043b\u0435\u00a0<em>Dart 3.0<\/em>\u00a0\u043d\u0430\u043c \u043d\u0435 \u043f\u0440\u0438\u0432\u044b\u043a\u0430\u0442\u044c, \u0441\u0443\u0434\u044f \u043f\u043e \u0442\u0435\u043d\u0434\u0435\u043d\u0446\u0438\u044f\u043c, \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0435\u0449\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d). \u0410 \u0432 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0441\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0441 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u043f\u043e\u043b\u0435\u043c. \u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f:<\/p>\n<pre><code class=\"dart\">void main() {   int myUnsafeId = 42424242;   myUnsafeId = myUnsafeId + 10;      var safeId = IdNumber(42424242);    safeId.verify(); \/\/ OK, could be true.   safeId + 10; \/\/ \u041e\u0448\u0438\u0431\u043a\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438, \u0442.\u043a. \u043d\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f.   10 + safeId; \/\/ \u041e\u0448\u0438\u0431\u043a\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438, \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u0442\u0438\u043f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430.   myUnsafeId = safeId; \/\/ \u041e\u0448\u0438\u0431\u043a\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438, \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u0442\u0438\u043f.   myUnsafeId = safeId as int; \/\/ OK, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u044f\u0432\u043d\u043e \u043e\u0442\u043a\u0430\u0441\u0442\u0438\u0442\u044c.   myUnsafeId = safeId.i; \/\/ OK, \u0431\u043e\u043b\u0435\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442. }<\/code><\/pre>\n<p>\u041f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u0432\u0441\u0435 \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e. \u041e\u0431\u044b\u0447\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f. \u0415\u0449\u0435 \u043e\u0434\u0438\u043d \u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0438\u043d\u043b\u0430\u0439\u043d-\u043a\u043b\u0430\u0441\u0441\u044b, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c\u00a0<em>zero cost abstraction<\/em>\u00a0\u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438:<\/p>\n<pre><code class=\"dart\">inline class TinyJson {   final Object it;   TinyJson(this.it);   Iterable&lt;num> get leaves sync* {     if (it is num) {       yield it;     } else if (it is List&lt;dynamic>) {       for (var element in it) {         yield* TinyJson(element).leaves;       }     } else {       throw \"Unexpected object encountered in TinyJson value\";     }   } }  void main() {   var tiny = TinyJson(&lt;dynamic>[&lt;dynamic>[1, 2], 3, &lt;dynamic>[]]);   print(tiny.leaves);   tiny.add(\"Hello!\"); \/\/ \u041e\u0448\u0438\u0431\u043a\u0430 }<\/code><\/pre>\n<p>\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d \u0438\u043d\u043b\u0430\u0439\u043d-\u043a\u043b\u0430\u0441\u0441\u00a0<code>TinyJson<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u00a0<em>Json<\/em>\u00a0\u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438. \u0413\u0435\u0442\u0442\u0435\u0440\u00a0<code>leaves<\/code>\u00a0\u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0432\u0441\u0435 \u0447\u0438\u0441\u043b\u0430 \u0438\u0437\u00a0<em>json<\/em>\u00a0\u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043c\u044b \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043d\u0435 \u0442\u043e, \u0442.\u043a. \u0432\u0441\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0437\u0430\u0434\u0430\u044e\u0442\u0441\u044f \u044f\u0432\u043d\u043e \u043d\u0430\u043c\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043d\u0430\u0448\u00a0<em>json<\/em>\u00a0\u0441\u043f\u0438\u0441\u043e\u043a \u043d\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0442.\u043a. \u0442\u0430\u043a\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u043d\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0430 \u0432 \u043d\u0430\u0448\u0435\u043c \u043a\u043b\u0430\u0441\u0441\u0435. \u0410 \u0432\u043e\u0442 \u0435\u0441\u043b\u0438 \u0431\u044b \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0441\u00a0<code>dynamic<\/code>\u00a0\u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u0442\u043e \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0438 \u0431\u044b\u043b\u043e \u0431\u044b \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435. \u0411\u0443\u0434\u0435\u0442 \u0432\u043e\u043e\u0431\u0449\u0435 \u0437\u0434\u043e\u0440\u043e\u0432\u043e, \u0435\u0441\u043b\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u043d\u043b\u0430\u0439\u043d-\u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043e\u0431\u043e\u0431\u0449\u0435\u043d\u043d\u044b\u0439\u00a0<em>Json<\/em>\u00a0\u0438\u043d\u043b\u0430\u0439\u043d-\u043a\u043b\u0430\u0441\u0441 \u043f\u043e\u0432\u0435\u0440\u0445\u00a0<code>dynamic<\/code>, \u043a\u0430\u043a \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u00a0<em>TS<\/em>:<\/p>\n<pre><code class=\"typescript\">type Json = null |      number |      string |     boolean |     Array&lt;Json> |     { [key: string]: Json };<\/code><\/pre>\n<p>\u041d\u043e \u043f\u043e\u043a\u0430 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u043b\u0438 \u043d\u0435\u0442 (\u0441\u043a\u043e\u0440\u0435\u0435 \u043d\u0435\u0442, \u0447\u0435\u043c \u0434\u0430). \u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u043d\u043b\u0430\u0439\u043d-\u043a\u043b\u0430\u0441\u0441\u044b \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u043c\u043d\u043e\u0433\u043e\u043e\u0431\u0435\u0449\u0430\u044e\u0449\u0435. \u0410 \u043a\u0430\u043a \u0432\u044b \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0435?<\/p>\n<p>\u041d\u0443 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f: \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043d\u043b\u0430\u0439\u043d-\u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0438\u043f\u043e\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441\u00a0<em>JS<\/em>\u00a0(\u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u0438 \u0441 \u043b\u044e\u0431\u044b\u043c \u0434\u0440\u0443\u0433\u0438\u043c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u00a0<em>API<\/em>\u00a0\u0432 \u043e\u0431\u0449\u0435\u043c). \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430\u00a0<code>JSObject<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439\u00a0<em>UI<\/em>-\u043a\u043d\u043e\u043f\u043a\u0443. \u041d\u043e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a\u00a0<code>js_util.getProperty<\/code>. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0438\u043d\u043b\u0430\u0439\u043d-\u043a\u043b\u0430\u0441\u0441\u0430\u043c, \u044d\u0442\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u0440\u0435\u0448\u0430\u0435\u043c\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430. \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0438\u043d\u043b\u0430\u0439\u043d-\u043a\u043b\u0430\u0441\u0441\u00a0<code>Button<\/code>\u00a0\u043f\u043e\u0432\u0435\u0440\u0445\u00a0<code>JSObject<\/code>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u043e\u043f\u0438\u0448\u0435\u043c \u0432\u0435\u0441\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439\u00a0<em>API<\/em>\u00a0\u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u00a0<em>UI<\/em>\u00a0\u043a\u043d\u043e\u043f\u043a\u043e\u0439. \u0414\u0430\u043b\u0435\u0435 \u0432 \u043a\u043e\u0434\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0443\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435 \u0441 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u043c\u00a0<code>JSObject<\/code>, \u0430 \u0441 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u043c\u00a0<code>Button<\/code>\u00a0<em>API<\/em>, \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e\u0434 &#171;\u043a\u0430\u043f\u043e\u0442\u043e\u043c&#187; \u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u043c\u0435\u0442\u043e\u0434\u044b, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a\u00a0<code>js_util.getProperty<\/code>.<\/p>\n<p>\u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442\u00a0<em>Haxe<\/em>, \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u044f\u0437\u044b\u043a\u0430\u00a0<em>Dart<\/em>, \u043d\u0430, \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0434\u0430\u0442\u044c \u043d\u043e\u0432\u043e\u0439 \u0444\u0438\u0447\u0435 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 (\u043d\u043e \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0431\u044b\u043b\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435, \u043c\u0435\u043d\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a\u00a0<a href=\"https:\/\/github.com\/dart-lang\/language\/blob\/main\/working\/1426-extension-types\/feature-specification-views.md\" rel=\"noopener noreferrer nofollow\"><em>View classes<\/em><\/a>,\u00a0<a href=\"https:\/\/github.com\/dart-lang\/language\/blob\/main\/working\/extension_structs\/overview.md\" rel=\"noopener noreferrer nofollow\"><em>Extension struct<\/em><\/a>). \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0432\u00a0<em>Dart 3.0<\/em>, \u043d\u043e\u0432\u044b\u0439 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043b\u043e\u0436\u0438\u0442\u0441\u044f \u0432 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u043a\u0430\u043a \u0442\u0430\u043c \u0438 \u0431\u044b\u043b. \u0421 \u044d\u0442\u0438\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u043e\u043d\u0438 \u0442\u043e\u0436\u0435 \u043d\u0435 \u043f\u0435\u0440\u0432\u044b\u0435; \u043a\u0430\u043a \u0432\u044b\u0448\u0435 \u0443\u0436\u0435 \u043e\u0442\u043c\u0435\u0447\u0430\u043b\u043e\u0441\u044c,\u00a0<em>Kotlin<\/em>\u00a0\u0442\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u0435\u0442 \u0438\u043d\u043b\u0430\u0439\u043d-\u043a\u043b\u0430\u0441\u0441\u044b (\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438\u00a0<em>Dart<\/em>\u00a0\u0432\u0434\u043e\u0445\u043d\u043e\u0432\u043b\u044f\u043b\u0430\u0441\u044c \u0438\u0434\u0435\u044f\u043c\u0438 \u0438\u0437\u00a0<em>Kotlin<\/em>?).<\/p>\n<blockquote>\n<p><em>\u00a0<\/em><\/p>\n<p><em>There are only two hard things in Computer Science: cache invalidation and naming things. &#8212; Phil Karlton<\/em><\/p>\n<p><em>\u00a0<\/em><\/p>\n<\/blockquote>\n<p>\u041a\u0430\u043a \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u043d\u0435\u0439\u043c\u0438\u043d\u0433 &#8212; \u044d\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u043e. \u0418 \u0432 \u043e\u0434\u043d\u0443 \u0438\u0437 \u0431\u0435\u0441\u0441\u043e\u043d\u043d\u044b\u0445 \u043d\u043e\u0447\u0435\u0439 \u044f \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u044f\u043b \u043f\u043e \u043f\u043e\u0432\u043e\u0434\u0443 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0431\u044b \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432 \u043e\u0431\u0449\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u0441\u0440\u0430\u0437\u0443 \u0431\u044b\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043f\u0440\u043e \u0447\u0442\u043e \u0438\u0434\u0435\u0442 \u0440\u0435\u0447\u044c. \u0412\u0441\u0435-\u0442\u0430\u043a\u0438, \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0432 \u0442\u043e\u043c \u0436\u0435\u00a0<em>Haxe<\/em>\u00a0\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043d\u0435 \u0441\u0430\u043c\u043e\u0435 \u0443\u0434\u0430\u0447\u043d\u043e\u0435, \u0442\u0430\u043a \u043a\u0430\u043a \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u0435\u0442\u0441\u044f \u0441 \u043e\u0431\u0449\u0435\u043f\u0440\u0438\u043d\u044f\u0442\u044b\u043c &#171;\u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441&#187;; \u0430, \u0432\u043e \u0432\u0442\u043e\u0440\u044b\u0445,\u00a0<code>newtype<\/code>, \u043a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u043e\u0432\u044b\u0439 \u0442\u0438\u043f, \u043c\u0430\u043b\u043e \u0447\u0442\u043e \u0435\u0449\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u0442. \u0418 \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443 \u043f\u0440\u0438\u0448\u043b\u0430 \u043c\u044b\u0441\u043b\u044c, \u0447\u0442\u043e \u044f \u0431\u044b \u043d\u0430\u0437\u0432\u0430\u043b \u044d\u0442\u043e\u00a0<code>nominally type alias<\/code>. \u0417\u0432\u0443\u0447\u0438\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u043e-\u043d\u0430\u0443\u0447\u043d\u043e\u043c\u0443, \u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0435? \u0411\u044b\u0441\u0442\u0440\u043e \u0437\u0430\u0433\u0443\u0433\u043b\u0438\u0432, \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b, \u0447\u0442\u043e \u044f \u043d\u0435 \u043f\u0435\u0440\u0432\u044b\u0439, \u0438 \u0442\u0430\u043a\u043e\u0435 \u0441\u043b\u043e\u0432\u043e\u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0435 \u0443\u0436\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u043e\u0441\u044c?. \u041d\u043e \u043d\u0438\u0447\u0435\u0433\u043e, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437 \u043f\u043e\u0432\u0435\u0437\u0435\u0442&#8230; \u0410 \u043a\u0430\u043a \u0431\u044b \u0432\u044b \u043d\u0430\u0437\u0432\u0430\u043b\u0438 \u044d\u0442\u043e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u0438 \u0435\u0434\u0438\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u043e (\u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e-\u043d\u0430\u0443\u0447\u043d\u043e\u043c\u0443)?<\/p>\n<h3>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h3>\n<p>\u041d\u0443, \u043d\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0432\u0441\u0435. \u0415\u0449\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u0438\u0437 \u043c\u0438\u0440\u0430 \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u043e\u043e\u0431\u0449\u0435 \u0438 \u043c\u0438\u0440\u0430\u00a0<em>Dart<\/em>\u00a0\u0438\u00a0<em>Flutter<\/em>\u00a0\u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 &#8212; \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435. \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435. \u0411\u044b\u043b\u043e \u0431\u044b \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u0432\u0430\u0448\u0435 \u043c\u043d\u0435\u043d\u0438\u0435 \u043f\u043e \u043d\u043e\u0432\u043e\u043c\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0443 \u044f\u0437\u044b\u043a\u0430\u00a0<em>Dart<\/em>. \u041a\u0430\u043a \u0432\u044b \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u0441\u044c \u043a \u043d\u0435\u043c\u0443, \u0438 \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u043d\u0435\u0433\u043e, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435, \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u00a0<em>Dart<\/em>\u00a0\u0442\u0440\u0430\u0442\u0438\u0442 \u0441\u0432\u043e\u0435 \u0432\u0440\u0435\u043c\u044f? \u0418\u043b\u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0441\u0442\u043e\u0438\u043b\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0435? \u0415\u0441\u043b\u0438 \u0434\u0430, \u0442\u043e \u0447\u0442\u043e? \u0417\u043d\u0430\u043b\u0438 \u043b\u0438 \u0432\u044b (\u0434\u043e \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438) \u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439? \u0411\u0443\u0434\u0443 \u0440\u0430\u0434 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043e\u0442\u0432\u0435\u0442\u044b \u043d\u0430 \u044d\u0442\u0438 (\u0434\u0430 \u0438 \u043b\u044e\u0431\u044b\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b) \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445. \u041d\u0443, \u0430 \u0442\u0435\u043f\u0435\u0440\u044c, \u0442\u043e\u0447\u043d\u043e, \u0432\u0441\u0435.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p> <!----> <!----><\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/744136\/\"> https:\/\/habr.com\/ru\/articles\/744136\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\">\n<div><figcaption>Distracted men meme: New clas modifier<\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438\u00a0<em>Dart<\/em>\u00a0\u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0430 3-\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u044f\u0437\u044b\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u0432\u043d\u0435\u0441\u043b\u0430 \u043c\u043d\u043e\u0433\u043e \u043d\u043e\u0432\u044b\u0445 \u043a\u0440\u0443\u0442\u044b\u0445 \u0448\u0442\u0443\u043a \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439. \u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u043d\u043e\u0432\u043e\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u0441\u0442\u0430\u043b\u0438 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u043a\u043b\u0430\u0441\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u043b\u0438 \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438\u00a0<em>Dart<\/em>. \u0421 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u043d\u043e\u0432\u044b\u0435 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u043b\u043e\u0436\u0430\u0442\u0441\u044f \u0432 \u0441\u0442\u0440\u043e\u0439\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u0443 \u0438 \u0434\u0430\u0436\u0435 \u043b\u043e\u0433\u0438\u0447\u043d\u044b; \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 &#8212; \u0447\u0443\u0432\u0441\u0442\u0432\u0443\u0435\u0442\u0441\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043d\u043e\u0433\u043e\u0441\u043b\u043e\u0432\u043d\u043e\u0441\u0442\u044c (\u00a0<code>abstract interface class<\/code>\u00a0\u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0431\u0449\u0435\u043f\u0440\u0438\u043d\u044f\u0442\u043e\u0433\u043e\u00a0<code>interface<\/code>) \u0438 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u044f\u0434\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u0430\u043d\u0435\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e. \u041d\u043e\u0432\u044b\u0435 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b \u0438 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f, \u043d\u043e \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043d\u0435 \u043e \u043d\u0438\u0445). \u041e\u0441\u0442\u0430\u0432\u0438\u043c \u0443\u0436\u0435 \u0432\u044b\u0448\u0435\u0434\u0448\u0438\u0435 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439. \u041b\u043e\u0433\u0438\u0447\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c: \u043e \u0447\u0435\u043c \u0442\u043e\u0433\u0434\u0430 \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u043e\u0439\u0434\u0435\u0442 \u0440\u0435\u0447\u044c? \u0417\u0430\u0438\u043d\u0442\u0440\u0438\u0433\u043e\u0432\u0430\u043d\u044b? \u0422\u043e\u0433\u0434\u0430 \u0434\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434 \u043a\u0430\u0442.<\/p>\n<p>\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u043e\u0432\u044b\u0439 (\u0441\u043a\u043e\u0440\u0435\u0435 \u0434\u0430\u0436\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439) \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043a\u043b\u0430\u0441\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u0435\u0449\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0441\u0442\u0430\u0434\u0438\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 (<em>accepted proposal<\/em>, \u0435\u0441\u043b\u0438 \u0431\u044b\u0442\u044c \u0442\u043e\u0447\u043d\u0435\u0435), \u043d\u043e \u0443\u0436\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0440\u0430\u0439\u043d\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c. \u041d\u0435 \u0431\u0443\u0434\u0443 \u0442\u043e\u043c\u0438\u0442\u044c &#8212; \u0440\u0435\u0447\u044c \u0438\u0434\u0435\u0442 \u043e\u0431\u00a0<a href=\"https:\/\/github.com\/dart-lang\/language\/blob\/main\/accepted\/future-releases\/inline-classes\/feature-specification.md\" rel=\"noopener noreferrer nofollow\">\u0438\u043d\u043b\u0430\u0439\u043d \u043a\u043b\u0430\u0441\u0441\u0430\u0445<\/a>\u00a0(<code>inline class<\/code>). \u0427\u0442\u043e \u044d\u0442\u043e \u0437\u0430 \u0437\u0432\u0435\u0440\u044c \u0442\u0430\u043a\u043e\u0439? \u0427\u0435\u043c \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0432 \u043f\u043e\u0432\u0441\u0435\u0434\u043d\u0435\u0432\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435? \u041a\u0430\u043a \u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f? \u0418\u043c\u0435\u043d\u043d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u0434\u0430\u043d\u043d\u0430\u044f \u0437\u0430\u043c\u0435\u0442\u043a\u0430. \u041d\u0443, \u0430 \u043f\u043e\u043a\u0430 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043f\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044e \u0444\u0438\u0447\u0438 \u0445\u043e\u0442\u044f \u0431\u044b \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c (\u0443\u0433\u0430\u0434\u0430\u0442\u044c), \u0447\u0442\u043e \u044d\u0442\u0430 \u0444\u0438\u0447\u0430 \u0434\u0435\u043b\u0430\u0435\u0442.<\/p>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043d\u0430\u0447\u0430\u0442\u044c \u0443\u0433\u043b\u0443\u0431\u043b\u044f\u0442\u044c\u0441\u044f \u0432 \u0442\u0435\u043c\u0443, \u0441\u0442\u043e\u0438\u0442 \u0437\u0430\u0434\u0430\u0442\u044c\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c: &#171;\u0410 \u043d\u0435 \u043d\u043e\u0432\u0438\u043d\u043a\u0430 \u043b\u0438 \u044d\u0442\u043e? \u0418\u043b\u0438 \u0443\u0436\u0435 \u043a\u0442\u043e-\u0442\u043e \u0440\u0430\u043d\u044c\u0448\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u043b \u043d\u0435\u0447\u0442\u043e \u043f\u043e\u0445\u043e\u0436\u0435\u0435?&#187;. \u0418 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441, \u043a\u0430\u043a \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u0431\u044b\u0432\u0430\u0435\u0442: \u043d\u0438\u0447\u0442\u043e \u043d\u0435 \u043d\u043e\u0432\u043e \u043f\u043e\u0434 \u043b\u0443\u043d\u043e\u0439. \u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438,\u00a0<em>Dart<\/em>\u00a0\u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u043e\u043f\u0440\u043e\u0445\u043e\u0434\u0446\u0435\u043c \u0432 \u044d\u0442\u043e\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u043f\u043e\u0434\u043e\u0431\u043d\u0430\u044f \u0444\u0438\u0447\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u044f\u0437\u044b\u043a\u0430\u0445, \u043a\u0430\u043a \u043e\u043d\u0430 \u0432 \u043d\u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438 \u0447\u0435\u043c \u043f\u043e\u043b\u0435\u0437\u043d\u0430; \u043d\u0443, \u0430 \u0443\u0436\u0435 \u043f\u043e\u0442\u043e\u043c \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a \u0435\u0435 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 \u044f\u0437\u044b\u043a\u0435\u00a0<em>Dart<\/em>\u00a0\u0438 \u0434\u0440\u0443\u0433\u0438\u043c \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u043c.<\/p>\n<h3>Abstracts in Haxe<\/h3>\n<p>\u041f\u0435\u0440\u0432\u043e\u0435 \u043c\u043e\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e \u0441 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0439 \u0444\u0438\u0447\u0435\u0439 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u0432 \u0448\u0438\u0440\u043e\u043a\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u043c \u0432 \u0443\u0437\u043a\u0438\u0445 \u043a\u0440\u0443\u0433\u0430\u0445 \u044f\u0437\u044b\u043a\u0435\u00a0<a href=\"https:\/\/haxe.org\/\" rel=\"noopener noreferrer nofollow\"><em>Haxe<\/em><\/a>. \u0414\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u0441\u043b\u044b\u0448\u0438\u0442 \u044d\u0442\u043e \u0438\u043c\u044f, \u043f\u043e\u044f\u0441\u043d\u044e.\u00a0<em>Haxe<\/em>\u00a0&#8212; \u044d\u0442\u043e \u044f\u0437\u044b\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c (\u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438) \u043a\u043e\u0434 \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c (\u0438 \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f) \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0435\u0434\u0438\u043d\u043e\u0439 \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u044b.\u00a0<em>Haxe<\/em>\u00a0&#8212; \u044d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043a\u0430\u043a\u00a0<em>Flutter<\/em>, \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0440\u0435\u0434\u0438 \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u042f \u0440\u0430\u043d\u0435\u0435 \u0443\u0436\u0435 \u0434\u0435\u043b\u0430\u043b \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043e\u0431\u0437\u043e\u0440 \u044d\u0442\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u0438 \u0435\u0433\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439, \u0438 \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0441 \u043d\u0438\u043c \u043c\u043e\u0436\u043d\u043e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f\u00a0<a href=\"https:\/\/syntaxerror.ru\/haxe-unity-among-programming-languages\/\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u0418 \u0445\u043e\u0442\u044f \u0441 \u0442\u0435\u0445 \u043f\u043e\u0440 \u0443\u0436\u0435 \u043c\u043d\u043e\u0433\u043e \u0432\u043e\u0434\u044b \u0443\u0442\u0435\u043a\u043b\u043e, \u0438\u00a0<em>Haxe<\/em>\u00a0\u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u043d\u0430 \u043c\u0435\u0441\u0442\u0435 \u0438 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c, \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u043c, \u044f\u0437\u044b\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043c\u043e\u0436\u043d\u043e.<\/p>\n<p>\u0412\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a \u043d\u0430\u0448\u0438\u043c\u00a0<s>\u0431\u0430\u0440\u0430\u043d\u0430\u043c<\/s>\u00a0\u043a\u043b\u0430\u0441\u0441\u0430\u043c. \u0412\u00a0<em>Haxe<\/em>\u00a0\u0435\u0441\u0442\u044c \u0442\u0438\u043f \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f\u00a0<a href=\"https:\/\/haxe.org\/manual\/types-abstract.html\" rel=\"noopener noreferrer nofollow\"><em>Abstract<\/em><\/a>. \u0414\u0430, \u0441 \u043d\u0435\u0439\u043c\u0438\u043d\u0433\u043e\u043c \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u043e\u0447\u0435\u043d\u044c. \u041d\u0438\u0447\u0435\u0433\u043e \u043e\u0431\u0449\u0435\u0433\u043e \u0441 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u043c\u0438 \u043a\u043b\u0430\u0441\u0441\u0430\u043c\u0438 \u044d\u0442\u043e\u0442 \u0442\u0438\u043f \u043d\u0435 \u0438\u043c\u0435\u0435\u0442. \u0410 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435, \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e, \u043c\u043e\u0436\u0435\u0442 \u0432\u0432\u0435\u0441\u0442\u0438 \u0432 \u0437\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u0435. \u041a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e\u00a0<code>abstract<\/code>\u00a0\u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0435 (\u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0442\u0438\u043f\u043e\u0432) \u0442\u0438\u043f\u044b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0443\u0436\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u0445\u0441\u044f. \u0417\u0432\u0443\u0447\u0438\u0442 \u0441\u043b\u043e\u0436\u043d\u043e, \u043d\u043e \u043f\u043e \u0444\u0430\u043a\u0442\u0443 \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a. \u0410\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u044b \u0432\u00a0<em>Haxe<\/em>\u00a0\u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043d\u0435\u0441\u0442\u0438 \u043a \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u043c\u00a0<em>zero cost abstraction<\/em>\u00a0\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c. \u041f\u043e\u0434 \u043d\u0438\u043c\u0438 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u044e\u0442 \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u044f\u0437\u044b\u043a\u0430 \u0438 \u0440\u0430\u0437\u043d\u043e\u0433\u043e \u0440\u043e\u0434\u0430 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0430\u0445\u0430\u0440, \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f &#171;\u043f\u043b\u0430\u0442\u0438\u0442\u044c&#187;\u00a0<em>run-time<\/em>\u00a0\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e. \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0442\u0430\u043a\u0438\u0435 \u0442\u0438\u043f\u044b \u0432\u00a0<em>Haxe<\/em>\u00a0\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438, \u0430 \u0432\u00a0<em>run-time<\/em>\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0442\u0438\u043f\u044b. \u0417\u0430 \u0441\u0447\u0435\u0442 \u0447\u0435\u0433\u043e, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043c\u044b \u0438 \u043c\u043e\u0436\u0435\u043c \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043f\u0440\u043e\u00a0<em>zero cost abstractions<\/em>.<\/p>\n<p>\u041f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u0430 \u043d\u0430\u00a0<em>Haxe<\/em>\u00a0\u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cs\">abstract MyInt(Int) {   inline public function new(i:Int) {     this = i;   } }<\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u043e\u0431\u044a\u044f\u0432\u0438\u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u0439 \u0442\u0438\u043f\u00a0<code>MyInt<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u0446\u0435\u043b\u044b\u043c \u0442\u0438\u043f\u043e\u043c\u00a0<code>Int<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u0445\u00a0<em>Haxe<\/em>\u00a0\u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c \u0442\u0438\u043f\u043e\u043c (<em>concrete type<\/em>). \u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u043c\u044b \u0432\u0432\u0435\u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u0442\u0438\u043f \u0441 \u0438\u043c\u0435\u043d\u0435\u043c\u00a0<code>MyInt<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u043f\u043e \u0441\u0432\u043e\u0435\u0439 \u0441\u0443\u0442\u0438, \u0441 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0431\u043e\u0441\u043e\u0431\u043b\u0435\u043d\u043d\u044b\u043c \u043d\u043e\u0432\u044b\u043c \u0442\u0438\u043f\u043e\u043c (\u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438), \u043d\u043e \u043f\u043e \u0444\u0430\u043a\u0442\u0443 (\u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f) \u0432\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0431 \u044d\u0442\u043e\u043c \u0442\u0438\u043f\u0435 \u0441\u0442\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0442\u0438\u043f \u0446\u0435\u043b\u044b\u0445 \u0447\u0438\u0441\u0435\u043b. \u041f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f:<\/p>\n<pre><code class=\"cs\">class Main {   static public function main() {     var a = new MyInt(12);     trace(a); \/\/ 12   } }<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0432 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438, \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c\u00a0<code>12<\/code>. \u041f\u043e\u043a\u0430 \u0447\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u0432\u0435\u0440\u0445\u044a\u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e. \u041d\u043e \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"cs\">class Main {     static public function main() {         var a : MyInt = 12;         trace(a);     } }<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043a\u043e\u0434, \u0442\u043e \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435:<\/p>\n<pre><code>src\/Main.hx:9: characters 3-22 : Int should be MyInt<\/code><\/pre>\n<p>\u041e\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043d\u0430\u043c, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0446\u0435\u043b\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0442\u0430\u043c, \u0433\u0434\u0435 \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0448 \u043d\u043e\u0432\u044b\u0439 \u0442\u0438\u043f\u00a0<code>MyInt<\/code>, \u043d\u0435\u043b\u044c\u0437\u044f. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043f\u043e \u0444\u0430\u043a\u0442\u0443 (\u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0430\u0431\u0437\u0430\u0446\u0435 \u043c\u044b \u0432 \u044d\u0442\u043e\u043c \u0443\u0431\u0435\u0434\u0438\u043c\u0441\u044f \u043b\u0438\u0447\u043d\u043e) \u0443 \u043d\u0430\u0441 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0435\u0435 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043a\u0430\u043a \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 (\u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0442\u0438\u043f\u043e\u0432) \u0442\u0438\u043f. \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u044d\u0442\u0438\u043c \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u044b \u0432\u00a0<em>Haxe<\/em>\u00a0\u0438 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u043e\u0442 \u0430\u043b\u0438\u0430\u0441\u043e\u0432 (\u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u043e\u0432) \u0442\u0438\u043f\u043e\u0432. \u0418 \u0432 \u044d\u0442\u043e\u043c \u0438\u0445 \u0441\u0438\u043b\u0430. \u0410\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u044b \u0441\u043c\u043e\u0433\u043b\u0438 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u043f\u043b\u044e\u0441\u044b \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u0442\u0438\u043f\u043e\u0432 \u0438 \u0430\u043b\u0438\u0430\u0441\u043e\u0432, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0438\u0437\u0431\u0435\u0436\u0430\u0432 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u0432 \u043a\u0430\u043a \u043f\u0435\u0440\u0432\u044b\u0445, \u0442\u0430\u043a \u0438 \u0432\u0442\u043e\u0440\u044b\u0445.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u044b \u0432\u00a0<em>Haxe<\/em>\u00a0&#8212; \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0430\u0445\u0430\u0440 \u043f\u043e\u0432\u0435\u0440\u0445 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0442\u0438\u043f\u0430, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440, \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<pre><code class=\"cs\">abstract MyInt(Int) {     inline public function new(i:Int) {         this = i;     } }  class RealClassInt {     final field:Int;      public function new(field:Int) {         this.field = field;     }      @override public function toString():String {         return Std.string(field);     } }  class Main {     static public function main() {         var a : MyInt = new MyInt(12);         var b : RealClassInt = new RealClassInt(13);         trace(a);         trace(b);     } }<\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441-\u043e\u0431\u0435\u0440\u0442\u043a\u0443\u00a0<code>RealClassInt<\/code>, \u0447\u0442\u043e\u0431\u044b \u043c\u044b \u043c\u043e\u0433\u043b\u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434. \u0415\u0441\u043b\u0438 \u043c\u044b \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c \u043d\u0430\u0448 \u043a\u043e\u0434 \u0432\u00a0<em>JS<\/em>, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e (\u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0435\u0440\u0441\u0438\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430) \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<pre><code class=\"javascript\">\/\/ ...  var MyInt = {}; MyInt._new = function(i) {     return i; }; var RealClassInt = function(field) {     this.field = field; }; RealClassInt.__name__ = true; RealClassInt.prototype = {     toString: function() {         return Std.string(this.field);     } }; var Main = function() { }; Main.__name__ = true; Main.main = function() {     var a = 12;     var b = new RealClassInt(13);     console.log(\"Main.hx:23:\",a);     console.log(\"Main.hx:24:\",b); };  \/\/ ...<\/code><\/pre>\n<p>\u041d\u0430\u0441 \u0432\u043e\u043b\u043d\u0443\u0435\u0442 \u043a\u043e\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0438\u00a0<code>main<\/code>. \u0418, \u043a\u0430\u043a \u043d\u0435\u0442\u0440\u0443\u0434\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0433\u0434\u0435 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442, \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e\u00a0<code>a<\/code>\u00a0\u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u00a0<code>12<\/code>, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f, \u043a\u0430\u043a \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e\u00a0<code>b<\/code>\u00a0\u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043f\u043e\u043b\u0435\u043c. \u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0432\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u043d\u0430\u00a0<em>Java<\/em>:<\/p>\n<pre><code class=\"java\">import haxe.root.*;  @SuppressWarnings(value={\"rawtypes\", \"unchecked\"}) public class Main extends haxe.lang.HxObject {     \/\/ ...          public static void main()     {         int a = ((int) (12) );         haxe.root.RealClassInt b = new haxe.root.RealClassInt(((int) (13) ));         haxe.Log.trace.__hx_invoke2_o(((double) (a) ), haxe.lang.Runtime.undefined, 0.0, new haxe.lang.DynamicObject(new java.lang.String[]{\"className\", \"fileName\", \"methodName\"}, new java.lang.Object[]{\"Main\", \"Main.hx\", \"main\"}, new java.lang.String[]{\"lineNumber\"}, new double[]{((double) (((double) (23) )) )}));         haxe.Log.trace.__hx_invoke2_o(0.0, b, 0.0, new haxe.lang.DynamicObject(new java.lang.String[]{\"className\", \"fileName\", \"methodName\"}, new java.lang.Object[]{\"Main\", \"Main.hx\", \"main\"}, new java.lang.String[]{\"lineNumber\"}, new double[]{((double) (((double) (24) )) )}));     } }<\/code><\/pre>\n<p>\u0420\u043e\u0432\u043d\u043e \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435 \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u0439 \u0442\u0438\u043f\u00a0<code>Int<\/code>, \u0438 \u043e\u0431\u0435\u0440\u0442\u043a\u0438 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f. \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u043a\u043e\u0434 \u043d\u0430\u00a0<em>C#<\/em>\u00a0\u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cs\">\/\/ Generated by Haxe 4.3.1  \/\/ ... #pragma warning disable 109, 114, 219, 429, 168, 162 namespace _Main {     public sealed class MyInt_Impl_ {         [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)]         public static int _new(int i) {             return ((int) (i) );         }     } }  #pragma warning disable 109, 114, 219, 429, 168, 162 public class RealClassInt : global::haxe.lang.HxObject {     \/\/ ...     public RealClassInt(int field) {         global::RealClassInt.__hx_ctor__RealClassInt(this, field);     }          public int field;          public virtual string toString() {         return global::Std.@string(this.field);     } }  public class Main : global::haxe.lang.HxObject {     public static void main() {         unchecked {             int a = ((int) (12) );             global::RealClassInt b = new global::RealClassInt(((int) (13) ));             global::haxe.Log.trace.__hx_invoke2_o(((double) (a) ), global::haxe.lang.Runtime.undefined, default(double), new global::haxe.lang.DynamicObject(new int[]{302979532, 1547539107, 1648581351}, new object[]{\"main\", \"Main\", \"Main.hx\"}, new int[]{1981972957}, new double[]{((double) (23) )}));             global::haxe.Log.trace.__hx_invoke2_o(default(double), b, default(double), new global::haxe.lang.DynamicObject(new int[]{302979532, 1547539107, 1648581351}, new object[]{\"main\", \"Main\", \"Main.hx\"}, new int[]{1981972957}, new double[]{((double) (24) )}));         }     } }<\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u0430 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0442\u0430\u043a\u0430\u044f \u0436\u0435. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u0442\u0430\u0442\u044c \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0434 &#171;\u043a\u0430\u043f\u043e\u0442\u043e\u043c&#187;. \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u044b \u0432\u00a0<em>Haxe<\/em>\u00a0&#8212; \u044d\u0442\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0430\u0445\u0430\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0438 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u0442\u0438\u043f\u043e\u0432 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0431\u0435\u0437 \u0441\u043e\u043f\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0441 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e. \u041b\u043e\u0433\u0438\u0447\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441: \u0433\u0434\u0435 \u0438 \u0437\u0430\u0447\u0435\u043c \u0442\u0430\u043a\u043e\u0435 \u043d\u0443\u0436\u043d\u043e? \u0421\u0430\u043c\u044b\u0439 \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440: \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u0432\u0435\u0441\u0442\u0438 \u0442\u0438\u043f\u044b \u0441 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u044f\u043c\u0438 \u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u043c\u0438 \u043d\u0430\u0434 \u043d\u0438\u043c\u0438 \u0434\u043b\u044f \u0438\u0437\u0431\u0435\u0436\u0430\u043d\u0438\u044f \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0432 \u043a\u043e\u0434\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u00a0<code>Email<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u0432 \u043e\u0431\u044b\u0447\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443, \u043d\u043e \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u043e\u043b\u0435\u0439 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435,<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-349379","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/349379","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=349379"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/349379\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=349379"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=349379"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=349379"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}