{"id":499085,"date":"2026-10-18T02:59:04","date_gmt":"2026-10-17T23:59:04","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=499085"},"modified":"2026-10-18T02:59:04","modified_gmt":"2026-10-17T23:59:04","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=499085","title":{"rendered":"\u041a\u0430\u043a \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u044f \u0441\u0442\u0440\u043e\u043a \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0442\u0438\u043f\u043e\u0432 HydraScript"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/01\/13\/15\/011315ae02b8b191620afce269a4cf02.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/01\/13\/15\/011315ae02b8b191620afce269a4cf02.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/01\/13\/15\/011315ae02b8b191620afce269a4cf02.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0412 HydraScript \u043c\u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u0438\u0441\u044c \u0434\u0432\u0435 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438: \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043b\u0438\u043d\u0443 \u0438 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u043f\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0443. \u041c\u0430\u0441\u0441\u0438\u0432\u044b \u0443\u0436\u0435 \u0443\u043c\u0435\u043b\u0438 \u0438 \u0442\u043e \u0438 \u0434\u0440\u0443\u0433\u043e\u0435. \u0427\u0442\u043e\u0431\u044b \u043d\u0430\u0443\u0447\u0438\u0442\u044c \u044d\u0442\u043e\u043c\u0443 \u0441\u0442\u0440\u043e\u043a\u0438, \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u0442 \u0432 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0435: \u043a\u0430\u0436\u0434\u043e\u0435 \u043f\u043e-\u0441\u0432\u043e\u0435\u043c\u0443 \u0440\u0435\u0448\u0430\u043b\u043e, \u0447\u0442\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u0442\u0438\u043f\u043e\u043c.<\/p>\n<p>\u0417\u0430\u043e\u0434\u043d\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043f\u043e\u0432\u043e\u0434 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u043f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043c. \u0422\u0438\u043f \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0435 \u0431\u044b\u043b, \u0430 \u0437\u0430 \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0435\u043c\u0443 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0438\u0434\u0442\u0438 \u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0448\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0435, \u0430 \u0435\u0451 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0448\u044c \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0443.<\/p>\n<p><a href=\"https:\/\/github.com\/Stepami\/hydrascript\" rel=\"noopener nofollow\">HydraScript<\/a> \u2014 \u043c\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u044f\u0437\u044b\u043a, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 C#. \u0412 \u043d\u0451\u043c \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u0441\u0435\u044f\u0442\u044c \u0434\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 <code>text[index]<\/code> \u043c\u0430\u043b\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b \u0438\u0437 .NET-\u0441\u0442\u0440\u043e\u043a\u0438: \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u043d\u044f\u0442\u044c, \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e \u043b\u0438 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0438 \u043a\u0430\u043a\u043e\u0439 \u0443 \u043d\u0435\u0433\u043e \u0442\u0438\u043f.<\/p>\n<h3>\u0420\u0430\u0437\u0432\u0435\u0440\u043d\u0438\u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u0443 \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430<\/h3>\n<p>\u041c\u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0440\u0435\u0448\u0438\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439 \u043d\u0430 \u0441\u0432\u043e\u0451\u043c \u044f\u0437\u044b\u043a\u0435 \u0442\u0430\u043a\u0438\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c:<\/p>\n<pre><code class=\"javascript\">let str = \"string\"let i = ~str - 1let revStr: stringwhile (i &gt;= 0) {    revStr = revStr + str[i]    i = i - 1}&gt;&gt;&gt; revStr<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper\"><\/span><\/a><\/div><\/pre>\n<p>\u0418\u0437 \u043d\u0435\u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e\u0433\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 \u0437\u0434\u0435\u0441\u044c <code>~<\/code> \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u0438\u043d\u044b \u0438 <code>&gt;&gt;&gt;<\/code> \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430. \u0423 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0435\u0441\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 <code>revStr<\/code> \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u0443\u0441\u0442\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<pre><code>gnirts<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0418\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u044f \u0441\u0442\u0440\u043e\u043a\u0438 \u0442\u043e\u0436\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443. \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0442\u0438\u043f <code>char<\/code> \u0434\u043b\u044f \u0442\u0430\u043a\u043e\u0433\u043e <a href=\"https:\/\/github.com\/Stepami\/hydrascript\/blob\/0310774fb3fef20aab1ebc3842a520fcff414de1\/tests\/HydraScript.IntegrationTests\/Samples\/string_reversed.js\" rel=\"noopener nofollow\">\u043f\u0440\u0438\u043c\u0435\u0440\u0430<\/a> \u043d\u0435 \u043d\u0443\u0436\u0435\u043d.<\/p>\n<p>\u0412 \u0441\u0442\u0430\u0440\u043e\u043c \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0443\u043d\u0430\u0440\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0431\u044b\u043b\u0438 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u044b \u044f\u0432\u043d\u043e:<\/p>\n<pre><code class=\"cs\">return visitable.Operator switch{    \"-\" when eType.Equals(number) =&gt; number,    \"!\" when eType.Equals(boolean) =&gt; boolean,    \"~\" when eType is ArrayType =&gt; number,    _ =&gt; throw new UnsupportedOperation(        visitable.Segment, eType, visitable.Operator)};<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0423 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u0438 \u0431\u044b\u043b \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u043e\u0439 \u0440\u0435\u0436\u0438\u043c:<\/p>\n<pre><code class=\"cs\">if (prevType is not ArrayType arrayType)    throw new NonAccessibleType(prevType);<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0410 \u0432\u0438\u0437\u0438\u0442\u043e\u0440 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0433\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u043b \u043f\u0440\u043e \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0447\u0438\u0441\u0435\u043b, \u043a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0430\u0446\u0438\u044e \u0441\u0442\u0440\u043e\u043a, \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0438 \u043a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0430\u0446\u0438\u044e \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432. \u041f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u0441\u0451 \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e. \u041d\u043e \u0432\u0441\u0435 \u044d\u0442\u0438 \u0437\u043d\u0430\u043d\u0438\u044f \u043e\u0431 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u0445 \u044f\u0437\u044b\u043a\u0430 \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u043e\u0441\u0435\u0434\u0430\u043b\u0438 \u0432 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0435.<\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0434\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0443\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c. \u0422\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u0438\u0437\u0438\u0442\u043e\u0440 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b \u0443\u0437\u043d\u0430\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0438 \u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u043e\u043d\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442. \u0414\u0430\u0436\u0435 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u00ab\u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u043e\u0439?\u00bb \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b \u044d\u043a\u0441\u043a\u0443\u0440\u0441\u0438\u0438 \u043f\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0443.<\/p>\n<p>\u042f \u043f\u0435\u0440\u0435\u043d\u0451\u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0432 \u043c\u043e\u0434\u0435\u043b\u044c \u0442\u0438\u043f\u043e\u0432. \u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0443 \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u043e\u0431\u0445\u043e\u0434 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0438 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0430, \u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u044f \u0442\u0438\u043f\u043e\u0432 \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u043e\u0432 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043c\u0435\u0441\u0442\u043e \u0440\u044f\u0434\u043e\u043c \u0441 \u0441\u0430\u043c\u0438\u043c\u0438 \u0442\u0438\u043f\u0430\u043c\u0438.<\/p>\n<h3>\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430<\/h3>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0442\u0430\u043a\u043e\u0439 <a href=\"https:\/\/github.com\/Stepami\/hydrascript\/blob\/704cb76b3708a64d789c1f24ff8cab3bb977894d\/src\/Domain\/HydraScript.Domain.IR\/Types\/IOperator.cs\" rel=\"noopener nofollow\">\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441<\/a>:<\/p>\n<pre><code class=\"cs\">public interface IOperator{    public IReadOnlyList&lt;string&gt; Values { get; }    public bool TryGetResultType(        OperationDescriptor operation,        out Type resultType);}public record struct OperationDescriptor(    string Operator,    IReadOnlyList&lt;Type&gt; OperandTypes);<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c <code>Type<\/code> \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0442\u0438\u043f\u043e\u0432 HydraScript, \u043a .NET-\u0440\u0435\u0444\u043b\u0435\u043a\u0441\u0438\u0438 \u043e\u043d \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u043d\u0435 \u0438\u043c\u0435\u0435\u0442.<\/p>\n<p>\u041e\u0442 \u0438\u043c\u0435\u043d\u0438 <code>IOperator<\/code> \u043c\u043e\u0436\u043d\u043e \u043e\u0436\u0438\u0434\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0447\u0438\u0441\u043b\u0430 \u0438\u043b\u0438 \u0441\u043a\u043b\u0435\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0438. \u041d\u043e \u043d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u043e\u0432 \u0435\u0449\u0451 \u043d\u0435\u0442. \u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0443 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c, \u0447\u0442\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432\u0438\u0434\u0430 <code>string[number]<\/code> \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e \u0438 \u0434\u0430\u0451\u0442 \u0441\u0442\u0440\u043e\u043a\u0443. \u0421 \u044d\u0442\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u0443\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043e\u043d\u043e \u0432\u043b\u043e\u0436\u0435\u043d\u043e.<\/p>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0442\u043e\u0436\u0435 \u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u0430\u0441\u044c. HydraScript \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0430\u0446\u0438\u0438 \u0441\u0442\u0440\u043e\u043a \u0438 <code>+<\/code>, \u0438 <code>++<\/code>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0434\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u0438\u0445 \u0432 <code>Values<\/code>. \u0423\u043d\u0430\u0440\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0435 \u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u044f \u0443\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u043e\u0431\u0449\u0438\u0439 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u0441 \u0440\u0430\u0437\u043d\u044b\u043c \u0441\u043e\u0441\u0442\u0430\u0432\u043e\u043c \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u043e\u0432.<\/p>\n<p>\u042d\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u0442\u043e\u0447\u043a\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f C#-\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0432 HydraScript \u043e\u0442 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442.<\/p>\n<h3>\u0422\u0438\u043f \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u0432\u043e\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438<\/h3>\n<p>\u0421 \u0433\u043e\u0442\u043e\u0432\u044b\u043c\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438 <a href=\"https:\/\/github.com\/Stepami\/hydrascript\/blob\/704cb76b3708a64d789c1f24ff8cab3bb977894d\/src\/Domain\/HydraScript.Domain.IR\/Types\/StringType.cs\" rel=\"noopener nofollow\">\u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0439 \u0442\u0438\u043f<\/a> \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cs\">public sealed class StringType() :    Type(        \"string\",        [            default(StringConcatOperator),            default(LengthOperator),            default(IndexOperator)        ]){    public static readonly StringType Instance = new();}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043e\u0442\u043a\u0443\u0434\u0430 \u043d\u0430\u0447\u0430\u0442\u044c \u0447\u0442\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a. <a href=\"https:\/\/github.com\/Stepami\/hydrascript\/blob\/704cb76b3708a64d789c1f24ff8cab3bb977894d\/src\/Domain\/HydraScript.Domain.IR\/Types\/Type.cs\" rel=\"noopener nofollow\">\u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u0442\u0438\u043f<\/a> \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u0430 \u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u043f\u043e \u0437\u0430\u043f\u0438\u0441\u044f\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432. \u0421\u0442\u0440\u043e\u043a\u0438 \u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u043c\u043e\u0433\u0443\u0442 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0443 \u0441\u0435\u0431\u044f \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u0438 \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u0438\u043d\u044b.<\/p>\n<p>\u0421\u0430\u043c\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0435\u0449\u0451 \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u043c. \u041d\u0430\u043b\u0438\u0447\u0438\u0435 <code>+<\/code> \u0443 \u0441\u0442\u0440\u043e\u043a\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043a \u043a\u0430\u043a\u043e\u043c\u0443 \u043f\u0440\u0430\u0432\u0438\u043b\u0443 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f. \u042d\u0442\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u043e\u0442\u0432\u0435\u0440\u0433\u043d\u0443\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u044b \u0432\u0440\u043e\u0434\u0435 <code>string + boolean<\/code>.<\/p>\n<p>\u0415\u0441\u0442\u044c \u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435: \u0432 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u043c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u043f\u043e\u0438\u0441\u043a \u0438\u0434\u0451\u0442 \u043f\u043e <strong>\u0442\u0438\u043f\u0443 \u043b\u0435\u0432\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u0430<\/strong>. HydraScript \u043d\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432 \u0441 \u0434\u0432\u0443\u0445 \u0441\u0442\u043e\u0440\u043e\u043d \u0438 \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u044b \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043e\u043a. \u0421\u043f\u0438\u0441\u043e\u043a \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u043e\u0432 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d, \u0438 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0435\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438.<\/p>\n<h3>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f IndexOperator<\/h3>\n<p>\u041c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0437\u0430\u0432\u0435\u0441\u0442\u0438 \u0444\u043b\u0430\u0433 <code>IsIndexable<\/code>. \u041f\u0435\u0440\u0432\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043e\u043d \u0431\u044b \u0437\u0430\u043a\u0440\u044b\u043b, \u043d\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0443 \u0432\u0441\u0451 \u0435\u0449\u0451 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0431\u044b \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c. \u0423 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043e\u043d \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443 \u0441\u0432\u044f\u0437\u0430\u043d \u0441 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u0442\u0438\u043f\u043e\u043c.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0424\u043e\u0440\u043c\u0430 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0422\u0438\u043f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>string[number]<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>string<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>T[][number]<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>T<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>~string<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>number<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>~T[]<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>number<\/code><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0414\u043b\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0442\u0438\u043f\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430. \u0415\u0441\u043b\u0438 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u00ab\u0434\u0430\u00bb \u0438\u043b\u0438 \u00ab\u043d\u0435\u0442\u00bb, \u0435\u043c\u0443 \u0441\u043d\u043e\u0432\u0430 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0442\u0438\u043f. \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044f \u0442\u0438\u043f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430, \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043d\u0435\u0441\u0442\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0446\u0435\u043b\u0438\u043a\u043e\u043c.<\/p>\n<p>\u0412 <a href=\"https:\/\/github.com\/Stepami\/hydrascript\/blob\/704cb76b3708a64d789c1f24ff8cab3bb977894d\/src\/Domain\/HydraScript.Domain.IR\/Types\/Operators\/IndexOperator.cs\" rel=\"noopener nofollow\"><code>IndexOperator<\/code><\/a> \u0437\u0430 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442 \u0434\u0432\u0430 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430:<\/p>\n<pre><code class=\"cs\">if (operation.OperandTypes is not    [        StringType or ArrayType,        NumberType or NullableType { Type: NumberType }    ])    return false;<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<pre><code class=\"cs\">resultType = operation.OperandTypes[0] switch{    StringType =&gt; StringType.Instance,    ArrayType arrayType =&gt; arrayType.Type,    _ =&gt; \"undefined\"};<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>Nullable-\u043e\u0431\u0451\u0440\u0442\u043a\u0430 \u0447\u0438\u0441\u043b\u043e\u0432\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0437\u0434\u0435\u0441\u044c \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438. \u041e\u043d\u043e \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441 \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u043c \u043e\u0442 <code>null<\/code> \u0438\u043b\u0438 \u043f\u043e\u043f\u0430\u0434\u0451\u0442 \u0432 \u0433\u0440\u0430\u043d\u0438\u0446\u044b: \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.<\/p>\n<p><a href=\"https:\/\/github.com\/Stepami\/hydrascript\/blob\/704cb76b3708a64d789c1f24ff8cab3bb977894d\/src\/Domain\/HydraScript.Domain.IR\/Types\/Operators\/LengthOperator.cs\" rel=\"noopener nofollow\"><code>LengthOperator<\/code><\/a> \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e. \u0421\u0442\u0440\u043e\u043a\u0430 \u0438 \u043c\u0430\u0441\u0441\u0438\u0432 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0442\u0438\u043f\u0430\u043c\u0438, \u043d\u043e \u0434\u043b\u0438\u043d\u0430 \u0443 \u043e\u0431\u043e\u0438\u0445 \u0438\u043c\u0435\u0435\u0442 \u0442\u0438\u043f <code>number<\/code>.<\/p>\n<p>Pattern matching \u043f\u0440\u0438 \u0442\u0430\u043a\u043e\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u043d\u0438\u043a\u0443\u0434\u0430 \u043d\u0435 \u0438\u0441\u0447\u0435\u0437\u0430\u0435\u0442. \u041c\u0435\u043d\u044f \u0432\u043f\u043e\u043b\u043d\u0435 \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 <code>switch<\/code>, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043e\u0434\u043d\u0443 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e. \u041d\u0435 \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043b\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0440\u0430\u0437\u044b\u0441\u043a\u0438\u0432\u0430\u0442\u044c \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043f\u043e \u0432\u0438\u0437\u0438\u0442\u043e\u0440\u0430\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u0443 \u0442\u0438\u043f\u0430 \u043f\u043e\u044f\u0432\u043b\u044f\u043b\u0430\u0441\u044c \u043d\u043e\u0432\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c.<\/p>\n<h3>\u041e\u0448\u0438\u0431\u043a\u0430\u043c\u0438 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440<\/h3>\n<p>\u041f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u044c \u0432\u0435\u0441\u044c \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0442\u0438\u043f\u043e\u0432 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e. \u041f\u0440\u0430\u0432\u0438\u043b\u0443 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0435\u0437\u0430\u0447\u0435\u043c \u0437\u043d\u0430\u0442\u044c \u043e\u0431 \u0443\u0437\u043b\u0430\u0445 AST, \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u0445 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u0438 \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445.<\/p>\n<p>\u041e\u0431\u0449\u0438\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a \u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u043c\u0435\u043d\u0442\u0443 \u0443\u0436\u0435 \u0441\u043b\u043e\u0436\u0438\u043b\u0441\u044f \u0432 \u043a\u043e\u0434\u0435. \u0412\u0438\u0437\u0438\u0442\u043e\u0440\u044b \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043b\u0438 \u0442\u0438\u043f\u044b \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u043e\u0432, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0438 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b\u0438 \u0442\u0438\u043f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430, \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043b\u0430\u043b \u044d\u0442\u043e \u0441\u0432\u043e\u0438\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c <code>if<\/code> \u0438 <code>switch<\/code>. \u041a\u043e\u0433\u0434\u0430 \u044f \u0441\u0442\u0430\u043b \u0432\u044b\u043d\u043e\u0441\u0438\u0442\u044c \u044d\u0442\u0438 \u0447\u0430\u0441\u0442\u043d\u044b\u0435 \u0441\u043b\u0443\u0447\u0430\u0438, \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u0448\u0430\u0433\u0438 \u0441\u0442\u0430\u043b\u0438 \u0432\u0438\u0434\u043d\u044b \u0441\u0430\u043c\u0438 \u0441\u043e\u0431\u043e\u0439. <code>IOperator<\/code> \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u044c \u0438\u0445 \u044f\u0432\u043d\u043e \u0438 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u0432\u0438\u0437\u0438\u0442\u043e\u0440\u0435 \u043e\u0431\u0449\u0438\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438.<\/p>\n<p><a href=\"https:\/\/github.com\/Stepami\/hydrascript\/blob\/704cb76b3708a64d789c1f24ff8cab3bb977894d\/src\/Application\/HydraScript.Application.StaticAnalysis\/Visitors\/SemanticChecker.cs\" rel=\"noopener nofollow\">\u0412\u0438\u0437\u0438\u0442\u043e\u0440 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0433\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/a> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cs\">if (!lType.TryGetOperator(visitable.Operator, out var @operator))    throw new UnsupportedOperation(        visitable.Segment, lType, visitable.Operator);var operation = new OperationDescriptor(    visitable.Operator,    OperandTypes: [lType, rType]);if (!@operator.TryGetResultType(operation, out var resultType))    throw new IncompatibleTypesOfOperands(        visitable.Segment,        left: lType,        right: rType);<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0414\u043b\u044f \u0434\u0432\u0443\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043e\u0442\u043a\u0430\u0437\u0430 \u043d\u0443\u0436\u043d\u044b \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f. \u0412\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 <code>~42<\/code> \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u0442 \u0447\u0438\u0441\u043b\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043e\u043d\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442. \u0423 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u044f \u0435\u0441\u0442\u044c, \u043d\u043e \u0438\u043d\u0434\u0435\u043a\u0441 <code>true<\/code> \u0434\u043b\u044f \u043d\u0435\u0451 \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442. \u0420\u0430\u0437\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u0438\u0441\u043a \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u044d\u0442\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0435.<\/p>\n<p>\u0412\u0438\u0437\u0438\u0442\u043e\u0440 \u0442\u0430\u043a\u0436\u0435 \u0437\u043d\u0430\u0435\u0442, \u0433\u0434\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u043b\u043e\u0441\u044c \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435. \u042d\u0442\u043e\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043f\u043e\u0434 \u0440\u0443\u043a\u043e\u0439, \u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0443\u0447\u0430\u0441\u0442\u043a\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0432 \u043a\u0430\u0436\u0434\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043d\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f. \u0412\u0438\u0437\u0438\u0442\u043e\u0440 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u0438 \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0438 \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a <code>prevType.TryGetOperator(\"[]\", ...)<\/code>.<\/p>\n<h3>\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0442\u043e\u0436\u0435 \u043d\u0443\u0436\u043d\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/h3>\n<p>\u041e\u0442 <code>IOperator<\/code> \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0442\u0438\u043f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430. \u0414\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e \u0441\u0430\u043c\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f <code>IndexRead<\/code> \u0434\u043e\u0445\u043e\u0434\u0438\u0442 \u0434\u043e \u044d\u0442\u043e\u0439 \u0432\u0435\u0442\u043a\u0438 \u0432 <a href=\"https:\/\/github.com\/Stepami\/hydrascript\/blob\/704cb76b3708a64d789c1f24ff8cab3bb977894d\/src\/Domain\/HydraScript.Domain.BackEnd\/Impl\/Instructions\/WithAssignment\/Simple.cs\" rel=\"noopener nofollow\">\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 <code>Simple<\/code> \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b<\/a>:<\/p>\n<pre><code class=\"cs\">\"[]\" when lValue is string @string =&gt;    @string.Substring(Convert.ToInt32(rValue), 1),<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0423 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0434\u043b\u0438\u043d\u044b <code>~<\/code> \u0443\u0436\u0435 \u0431\u044b\u043b\u0430 \u0441\u0432\u043e\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f. \u041e\u043d <a href=\"https:\/\/github.com\/Stepami\/hydrascript\/commit\/eba1a9bda812aa0a8b6735dade57806cedc7ecef\" rel=\"noopener nofollow\">\u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0434\u043b\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0441\u043f\u0438\u0441\u043a\u0430\u043c\u0438 <code>List&lt;object&gt;<\/code>. \u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u043b <code>~<\/code> \u0434\u043b\u044f <code>ArrayType<\/code> \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u043b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u0430\u043a <code>number<\/code>. \u041d\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u0437\u044f\u0442\u044c <code>Count<\/code>:<\/p>\n<pre><code class=\"cs\">\"~\" =&gt; ((List&lt;object&gt;)value!).Count,<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041a\u043e\u0433\u0434\u0430 \u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u043b <a href=\"https:\/\/github.com\/Stepami\/hydrascript\/pull\/226\" rel=\"noopener nofollow\">\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438<\/a>, \u044d\u0442\u043e\u0442 \u0436\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u043e\u0434\u043e\u0448\u0451\u043b \u0438 \u0434\u043b\u044f \u0438\u0445 \u0434\u043b\u0438\u043d\u044b. \u0412 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0442\u0438\u043f\u043e\u0432 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043e\u0431\u0449\u0438\u0439 <code>LengthOperator<\/code> \u0434\u043b\u044f \u0441\u0442\u0440\u043e\u043a \u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432, \u0430 \u0432 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u043b \u0432\u0435\u0442\u043a\u0443 \u043d\u0430 \u0434\u0432\u0430 \u0441\u043b\u0443\u0447\u0430\u044f: <code>list.Count<\/code> \u0438 <code>@string.Length<\/code>.<\/p>\n<p>\u041d\u043e \u0432 \u044d\u0442\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u044f\u0442\u0430\u043b\u0430\u0441\u044c \u043e\u0448\u0438\u0431\u043a\u0430, \u043e\u0431\u0449\u0430\u044f \u0434\u043b\u044f \u043e\u0431\u043e\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432. <code>Count<\/code> \u0438 <code>Length<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 <code>int<\/code>, \u0430 \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0432 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442 \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u044b \u043a <code>double<\/code>. \u041f\u043e\u043a\u0430 \u0434\u043b\u0438\u043d\u0430 \u043f\u043e\u043f\u0430\u0434\u0430\u043b\u0430 \u0432 \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u0443, \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0435 \u0441\u0433\u043b\u0430\u0436\u0438\u0432\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c. \u041f\u0440\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u0430 \u043e\u043d\u043e \u0432\u044b\u043b\u0435\u0437\u043b\u043e \u043d\u0430\u0440\u0443\u0436\u0443. \u0412\u043e\u0442 <a href=\"https:\/\/github.com\/Stepami\/hydrascript\/issues\/232\" rel=\"noopener nofollow\">\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u0441\u044f \u0431\u0430\u0433<\/a>:<\/p>\n<pre><code class=\"javascript\">let i = 0const s = \"abcdef\"const sLen = ~swhile (i &lt; sLen) {    if (i + 1 == sLen)        &gt;&gt;&gt; \"i is 5\"    i = i + 1}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0426\u0438\u043a\u043b \u0434\u043e\u0445\u043e\u0434\u0438\u043b \u0434\u043e \u043a\u043e\u043d\u0446\u0430, \u043d\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043d\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u043b\u043e\u0441\u044c. \u041d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u043b\u0435\u0432\u0430 \u043e\u0442 <code>==<\/code> \u043f\u043e\u043b\u0443\u0447\u0430\u043b\u043e\u0441\u044c <code>6<\/code> \u0432 \u0432\u0438\u0434\u0435 <code>double<\/code>, \u0430 \u0441\u043f\u0440\u0430\u0432\u0430 \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u043e\u0441\u044c <code>6<\/code> \u0432 \u0432\u0438\u0434\u0435 <code>int<\/code>. \u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 \u0445\u0440\u0430\u043d\u0438\u043b\u0430 \u043e\u0431\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a\u0430\u043a <code>object<\/code> \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043b\u0430 \u0447\u0435\u0440\u0435\u0437 <code>Equals(lValue, rValue)<\/code>. \u0414\u043b\u044f \u0442\u0430\u043a\u043e\u0433\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0435 <code>double<\/code> \u0438 <code>int<\/code> \u043d\u0435 \u0440\u0430\u0432\u043d\u044b. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0443\u0441\u043b\u043e\u0432\u0438\u0435 <code>i == sLen - 1<\/code> \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b\u043e: \u0432\u044b\u0447\u0438\u0442\u0430\u043d\u0438\u0435 \u0442\u043e\u0436\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b\u043e <code>double<\/code>, \u0438 \u043d\u0430 \u043d\u0443\u0436\u043d\u043e\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0442\u0438\u043f\u044b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u043b\u0438.<\/p>\n<p>\u0412 <a href=\"https:\/\/github.com\/Stepami\/hydrascript\/pull\/242\" rel=\"noopener nofollow\">\u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438<\/a> \u044f \u043f\u0440\u0438\u0432\u0451\u043b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u0438\u043d\u044b \u043a \u0442\u043e\u043c\u0443 \u0436\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u0430. \u0421\u0440\u0430\u0437\u0443 \u0434\u043b\u044f \u0441\u0442\u0440\u043e\u043a \u0438 \u0441\u043f\u0438\u0441\u043a\u043e\u0432:<\/p>\n<pre><code class=\"cs\">\"~\" when value is List&lt;object&gt; list =&gt; Convert.ToDouble(list.Count),\"~\" when value is string @string =&gt; Convert.ToDouble(@string.Length),<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 <code>i is 5<\/code>; \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0441\u0442\u0430\u043b \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u043e\u043d\u043d\u044b\u043c \u0442\u0435\u0441\u0442\u043e\u043c. \u0414\u043b\u044f \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u0438 \u0434\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441 \u043e\u0431\u0435\u0438\u0445 \u0441\u0442\u043e\u0440\u043e\u043d \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u0430 <code>number<\/code>. \u041e\u0448\u0438\u0431\u043a\u0430 \u0431\u044b\u043b\u0430 \u0432 \u0442\u043e\u043c, \u043a\u0430\u043a \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u0430 \u044d\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 C#. \u041e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0442\u0432\u0435\u0442\u0430 \u043e\u0442 <code>IOperator<\/code> \u0434\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e.<\/p>\n<p>\u0423 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0441 \u0440\u0430\u0437\u0432\u043e\u0440\u043e\u0442\u043e\u043c \u0441\u0442\u0440\u043e\u043a\u0438 \u0435\u0441\u0442\u044c \u0438 \u0434\u0440\u0443\u0433\u043e\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435. \u0418\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u044f \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442 \u043e\u0434\u043d\u0443 \u043a\u043e\u0434\u043e\u0432\u0443\u044e \u0435\u0434\u0438\u043d\u0438\u0446\u0443 UTF-16. \u0421 ASCII \u0432\u0441\u0451 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f, \u043d\u043e \u043f\u0440\u0438 \u0440\u0430\u0437\u0432\u043e\u0440\u043e\u0442\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e Unicode-\u0442\u0435\u043a\u0441\u0442\u0430 \u0442\u0430\u043a\u043e\u0439 \u0446\u0438\u043a\u043b \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0437\u043e\u0440\u0432\u0430\u0442\u044c \u0441\u0443\u0440\u0440\u043e\u0433\u0430\u0442\u043d\u0443\u044e \u043f\u0430\u0440\u0443 \u0438\u043b\u0438 \u0433\u0440\u0430\u0444\u0435\u043c\u0443. \u0427\u0438\u0441\u043b\u043e\u0432\u043e\u0439 \u0438\u043d\u0434\u0435\u043a\u0441 \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0439\u0442\u0438 \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u0442\u0440\u043e\u043a\u0438.<\/p>\n<h3>\u0421\u0442\u043e\u0438\u043b\u043e \u043b\u0438 \u0437\u0430\u0432\u043e\u0434\u0438\u0442\u044c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441<\/h3>\n<p>\u041a\u043e\u0434\u0430 \u0441\u0442\u0430\u043b\u043e \u0431\u043e\u043b\u044c\u0448\u0435: \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432, \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438, \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440 \u0438 \u043f\u043e\u0438\u0441\u043a. \u0420\u0430\u0434\u0438 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u043f\u0440\u044f\u0442\u0430\u0442\u044c \u0442\u0440\u0451\u0445\u0441\u0442\u0440\u043e\u0447\u043d\u044b\u0439 <code>switch<\/code>, \u044f \u0431\u044b \u0432\u0441\u0451 \u044d\u0442\u043e \u043d\u0435 \u0437\u0430\u0442\u0435\u0432\u0430\u043b.<\/p>\n<p>\u041d\u043e \u0432 HydraScript \u0437\u0430\u0434\u0430\u0447\u0430 \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430 \u0434\u0440\u0443\u0433\u0443\u044e \u0446\u0435\u043d\u0443. \u041a\u0430\u0436\u0434\u044b\u0439 \u0432\u0438\u0437\u0438\u0442\u043e\u0440 \u0445\u0440\u0430\u043d\u0438\u043b \u0441\u0432\u043e\u044e \u0447\u0430\u0441\u0442\u044c \u043e\u0442\u0432\u0435\u0442\u0430 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u0445 \u0442\u0438\u043f\u0430. \u041c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0434\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0432\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0438 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0441\u0451 \u043a\u0430\u043a \u0435\u0441\u0442\u044c, \u0430 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u044d\u0442\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435.<\/p>\n<p>\u0421 <code>IOperator<\/code> \u044f \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e <code>StringType<\/code>, \u0432\u0438\u0436\u0443 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0436\u0443 \u043a \u043d\u0443\u0436\u043d\u043e\u043c\u0443 \u043f\u0440\u0430\u0432\u0438\u043b\u0443. \u0415\u0441\u043b\u0438 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u044f, \u044f \u0437\u043d\u0430\u044e, \u0433\u0434\u0435 \u0438\u0441\u043a\u0430\u0442\u044c. \u0414\u043b\u044f \u043c\u0435\u043d\u044f \u044d\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u0437\u0430\u0432\u0435\u0441\u0442\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0447\u0435\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0435\u0442\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0443\u0431\u0440\u0430\u0442\u044c \u0438\u0437 \u0432\u0438\u0437\u0438\u0442\u043e\u0440\u0430.<\/p>\n<p>\u0415\u0449\u0451 \u044f \u0432\u0435\u0434\u0443 <a href=\"https:\/\/t.me\/+MgLRLb8ZSVAxNTY6\" rel=\"noopener nofollow\">Telegram \u043a\u0430\u043d\u0430\u043b StepOne<\/a>, \u043a\u0443\u0434\u0430 \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e \u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043d\u0430 C#, \u0434\u0430\u044e \u043a\u0430\u0440\u044c\u0435\u0440\u043d\u044b\u0435 \u0441\u043e\u0432\u0435\u0442\u044b, \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0438\u0437 \u043b\u0438\u0447\u043d\u043e\u0433\u043e \u043e\u043f\u044b\u0442\u0430 \u0438 \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u044e \u0432\u0441\u0435 \u0442\u0430\u0439\u043d\u044b IT\u2011\u0438\u043d\u0434\u0443\u0441\u0442\u0440\u0438\u0438!<\/p>\n<\/div>\n<p>\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\/1095744\/\">https:\/\/habr.com\/ru\/articles\/1095744\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0412 HydraScript \u043c\u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u0438\u0441\u044c \u0434\u0432\u0435 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438: \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043b\u0438\u043d\u0443 \u0438 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u043f\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0443. \u041c\u0430\u0441\u0441\u0438\u0432\u044b \u0443\u0436\u0435 \u0443\u043c\u0435\u043b\u0438 \u0438 \u0442\u043e \u0438 \u0434\u0440\u0443\u0433\u043e\u0435. \u0427\u0442\u043e\u0431\u044b \u043d\u0430\u0443\u0447\u0438\u0442\u044c \u044d\u0442\u043e\u043c\u0443 \u0441\u0442\u0440\u043e\u043a\u0438, \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u0442 \u0432 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0435: \u043a\u0430\u0436\u0434\u043e\u0435 \u043f\u043e-\u0441\u0432\u043e\u0435\u043c\u0443 \u0440\u0435\u0448\u0430\u043b\u043e, \u0447\u0442\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u0442\u0438\u043f\u043e\u043c.\u0417\u0430\u043e\u0434\u043d\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043f\u043e\u0432\u043e\u0434 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u043f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043c. \u0422\u0438\u043f \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0435 \u0431\u044b\u043b, \u0430 \u0437\u0430 \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0435\u043c\u0443 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0438\u0434\u0442\u0438 \u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0448\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0435, \u0430 \u0435\u0451 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0448\u044c \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0443.HydraScript \u2014 \u043c\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u044f\u0437\u044b\u043a, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 C#. \u0412 \u043d\u0451\u043c \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u0441\u0435\u044f\u0442\u044c \u0434\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 text[index] \u043c\u0430\u043b\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b \u0438\u0437 .NET-\u0441\u0442\u0440\u043e\u043a\u0438: \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u043d\u044f\u0442\u044c, \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e \u043b\u0438 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0438 \u043a\u0430\u043a\u043e\u0439 \u0443 \u043d\u0435\u0433\u043e \u0442\u0438\u043f.\u0420\u0430\u0437\u0432\u0435\u0440\u043d\u0438\u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u0443 \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430\u041c\u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0440\u0435\u0448\u0438\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439 \u043d\u0430 \u0441\u0432\u043e\u0451\u043c \u044f\u0437\u044b\u043a\u0435 \u0442\u0430\u043a\u0438\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c:let str = &#171;string&#187;let i = ~str &#8212; 1let revStr: stringwhile (i &gt;= 0) {    revStr = revStr + str[i]    i = i &#8212; 1}&gt;&gt;&gt; revStr\u0418\u0437 \u043d\u0435\u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e\u0433\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 \u0437\u0434\u0435\u0441\u044c ~ \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u0438\u043d\u044b \u0438 &gt;&gt;&gt; \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430. \u0423 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0435\u0441\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 revStr \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u0443\u0441\u0442\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:gnirts\u0418\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u044f \u0441\u0442\u0440\u043e\u043a\u0438 \u0442\u043e\u0436\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443. \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0442\u0438\u043f char \u0434\u043b\u044f \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d.\u0412 \u0441\u0442\u0430\u0440\u043e\u043c \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0443\u043d\u0430\u0440\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0431\u044b\u043b\u0438 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u044b \u044f\u0432\u043d\u043e:return visitable.Operator switch{    &#171;-&#187; when eType.Equals(number) =&gt; number,    &#171;!&#187; when eType.Equals(boolean) =&gt; boolean,    &#171;~&#187; when eType is ArrayType =&gt; number,    _ =&gt; throw new UnsupportedOperation(        visitable.Segment, eType, visitable.Operator)};\u0423 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u0438 \u0431\u044b\u043b \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u043e\u0439 \u0440\u0435\u0436\u0438\u043c:if (prevType is not ArrayType arrayType)    throw new NonAccessibleType(prevType);\u0410 \u0432\u0438\u0437\u0438\u0442\u043e\u0440 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0433\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u043b \u043f\u0440\u043e \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0447\u0438\u0441\u0435\u043b, \u043a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0430\u0446\u0438\u044e \u0441\u0442\u0440\u043e\u043a, \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0438 \u043a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0430\u0446\u0438\u044e \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432. \u041f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u0441\u0451 \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e. \u041d\u043e \u0432\u0441\u0435 \u044d\u0442\u0438 \u0437\u043d\u0430\u043d\u0438\u044f \u043e\u0431 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u0445 \u044f\u0437\u044b\u043a\u0430 \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u043e\u0441\u0435\u0434\u0430\u043b\u0438 \u0432 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0435.\u041c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0434\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0443\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c. \u0422\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u0438\u0437\u0438\u0442\u043e\u0440 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b \u0443\u0437\u043d\u0430\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0438 \u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u043e\u043d\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442. \u0414\u0430\u0436\u0435 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u00ab\u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u043e\u0439?\u00bb \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b \u044d\u043a\u0441\u043a\u0443\u0440\u0441\u0438\u0438 \u043f\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0443.\u042f \u043f\u0435\u0440\u0435\u043d\u0451\u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0432 \u043c\u043e\u0434\u0435\u043b\u044c \u0442\u0438\u043f\u043e\u0432. \u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0443 \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u043e\u0431\u0445\u043e\u0434 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0438 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0430, \u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u044f \u0442\u0438\u043f\u043e\u0432 \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u043e\u0432 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043c\u0435\u0441\u0442\u043e \u0440\u044f\u0434\u043e\u043c \u0441 \u0441\u0430\u043c\u0438\u043c\u0438 \u0442\u0438\u043f\u0430\u043c\u0438.\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u041f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0442\u0430\u043a\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441:public interface IOperator{    public IReadOnlyList&lt;string&gt; Values { get; }    public bool TryGetResultType(        OperationDescriptor operation,        out Type resultType);}public record struct OperationDescriptor(    string Operator,    IReadOnlyList&lt;Type&gt; OperandTypes);\u0417\u0434\u0435\u0441\u044c Type \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0442\u0438\u043f\u043e\u0432 HydraScript, \u043a .NET-\u0440\u0435\u0444\u043b\u0435\u043a\u0441\u0438\u0438 \u043e\u043d \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u043d\u0435 \u0438\u043c\u0435\u0435\u0442.\u041e\u0442 \u0438\u043c\u0435\u043d\u0438 IOperator \u043c\u043e\u0436\u043d\u043e \u043e\u0436\u0438\u0434\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0447\u0438\u0441\u043b\u0430 \u0438\u043b\u0438 \u0441\u043a\u043b\u0435\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0438. \u041d\u043e \u043d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u043e\u0432 \u0435\u0449\u0451 \u043d\u0435\u0442. \u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0443 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c, \u0447\u0442\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432\u0438\u0434\u0430 string[number] \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e \u0438 \u0434\u0430\u0451\u0442 \u0441\u0442\u0440\u043e\u043a\u0443. \u0421 \u044d\u0442\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u0443\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043e\u043d\u043e \u0432\u043b\u043e\u0436\u0435\u043d\u043e.\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0442\u043e\u0436\u0435 \u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u0430\u0441\u044c. HydraScript \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0430\u0446\u0438\u0438 \u0441\u0442\u0440\u043e\u043a \u0438 +, \u0438 ++, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0434\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u0438\u0445 \u0432 Values. \u0423\u043d\u0430\u0440\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0435 \u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u044f \u0443\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u043e\u0431\u0449\u0438\u0439 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u0441 \u0440\u0430\u0437\u043d\u044b\u043c \u0441\u043e\u0441\u0442\u0430\u0432\u043e\u043c \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u043e\u0432.\u042d\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u0442\u043e\u0447\u043a\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f C#-\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0432 HydraScript \u043e\u0442 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442.\u0422\u0438\u043f \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u0432\u043e\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438\u0421 \u0433\u043e\u0442\u043e\u0432\u044b\u043c\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0439 \u0442\u0438\u043f \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:public sealed class StringType() :    Type(        &#171;string&#187;,        [            default(StringConcatOperator),            default(LengthOperator),            default(IndexOperator)        ]){    public static readonly StringType Instance = new();}\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043e\u0442\u043a\u0443\u0434\u0430 \u043d\u0430\u0447\u0430\u0442\u044c \u0447\u0442\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a. \u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u0442\u0438\u043f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u0430 \u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u043f\u043e \u0437\u0430\u043f\u0438\u0441\u044f\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432. \u0421\u0442\u0440\u043e\u043a\u0438 \u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u043c\u043e\u0433\u0443\u0442 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0443 \u0441\u0435\u0431\u044f \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u0438 \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u0438\u043d\u044b.\u0421\u0430\u043c\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0435\u0449\u0451 \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u043c. \u041d\u0430\u043b\u0438\u0447\u0438\u0435 + \u0443 \u0441\u0442\u0440\u043e\u043a\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043a \u043a\u0430\u043a\u043e\u043c\u0443 \u043f\u0440\u0430\u0432\u0438\u043b\u0443 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f. \u042d\u0442\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u043e\u0442\u0432\u0435\u0440\u0433\u043d\u0443\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u044b \u0432\u0440\u043e\u0434\u0435 string + boolean.\u0415\u0441\u0442\u044c \u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435: \u0432 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u043c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u043f\u043e\u0438\u0441\u043a \u0438\u0434\u0451\u0442 \u043f\u043e \u0442\u0438\u043f\u0443 \u043b\u0435\u0432\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u0430. HydraScript \u043d\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432 \u0441 \u0434\u0432\u0443\u0445 \u0441\u0442\u043e\u0440\u043e\u043d \u0438 \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u044b \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043e\u043a. \u0421\u043f\u0438\u0441\u043e\u043a \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u043e\u0432 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d, \u0438 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0435\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438.\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f IndexOperator\u041c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0437\u0430\u0432\u0435\u0441\u0442\u0438 \u0444\u043b\u0430\u0433 IsIndexable. \u041f\u0435\u0440\u0432\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043e\u043d \u0431\u044b \u0437\u0430\u043a\u0440\u044b\u043b, \u043d\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0443 \u0432\u0441\u0451 \u0435\u0449\u0451 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0431\u044b \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c. \u0423 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043e\u043d \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443 \u0441\u0432\u044f\u0437\u0430\u043d \u0441 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u0442\u0438\u043f\u043e\u043c.\u0424\u043e\u0440\u043c\u0430 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0422\u0438\u043f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430string[number]stringT[][number]T~stringnumber~T[]number\u0414\u043b\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0442\u0438\u043f\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430. \u0415\u0441\u043b\u0438 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u00ab\u0434\u0430\u00bb \u0438\u043b\u0438 \u00ab\u043d\u0435\u0442\u00bb, \u0435\u043c\u0443 \u0441\u043d\u043e\u0432\u0430 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0442\u0438\u043f. \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044f \u0442\u0438\u043f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430, \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043d\u0435\u0441\u0442\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0446\u0435\u043b\u0438\u043a\u043e\u043c.\u0412 IndexOperator \u0437\u0430 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442 \u0434\u0432\u0430 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430:if (operation.OperandTypes is not    [        StringType or ArrayType,        NumberType or NullableType { Type: NumberType }    ])    return false;resultType = operation.OperandTypes[0] switch{    StringType =&gt; StringType.Instance,    ArrayType arrayType =&gt; arrayType.Type,    _ =&gt; &#171;undefined&#187;};Nullable-\u043e\u0431\u0451\u0440\u0442\u043a\u0430 \u0447\u0438\u0441\u043b\u043e\u0432\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0437\u0434\u0435\u0441\u044c \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438. \u041e\u043d\u043e \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441 \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u043c \u043e\u0442 null \u0438\u043b\u0438 \u043f\u043e\u043f\u0430\u0434\u0451\u0442 \u0432 \u0433\u0440\u0430\u043d\u0438\u0446\u044b: \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.LengthOperator \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e. \u0421\u0442\u0440\u043e\u043a\u0430 \u0438 \u043c\u0430\u0441\u0441\u0438\u0432 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0442\u0438\u043f\u0430\u043c\u0438, \u043d\u043e \u0434\u043b\u0438\u043d\u0430 \u0443 \u043e\u0431\u043e\u0438\u0445 \u0438\u043c\u0435\u0435\u0442 \u0442\u0438\u043f number.Pattern matching \u043f\u0440\u0438 \u0442\u0430\u043a\u043e\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u043d\u0438\u043a\u0443\u0434\u0430 \u043d\u0435 \u0438\u0441\u0447\u0435\u0437\u0430\u0435\u0442. \u041c\u0435\u043d\u044f \u0432\u043f\u043e\u043b\u043d\u0435 \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 switch, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043e\u0434\u043d\u0443 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e. \u041d\u0435 \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043b\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0440\u0430\u0437\u044b\u0441\u043a\u0438\u0432\u0430\u0442\u044c \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043f\u043e \u0432\u0438\u0437\u0438\u0442\u043e\u0440\u0430\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u0443 \u0442\u0438\u043f\u0430 \u043f\u043e\u044f\u0432\u043b\u044f\u043b\u0430\u0441\u044c \u043d\u043e\u0432\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c.\u041e\u0448\u0438\u0431\u043a\u0430\u043c\u0438 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u041f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u044c \u0432\u0435\u0441\u044c \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0442\u0438\u043f\u043e\u0432 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e. \u041f\u0440\u0430\u0432\u0438\u043b\u0443 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0435\u0437\u0430\u0447\u0435\u043c \u0437\u043d\u0430\u0442\u044c \u043e\u0431 \u0443\u0437\u043b\u0430\u0445 AST, \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u0445 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u0438 \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445.\u041e\u0431\u0449\u0438\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a \u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u043c\u0435\u043d\u0442\u0443 \u0443\u0436\u0435 \u0441\u043b\u043e\u0436\u0438\u043b\u0441\u044f \u0432 \u043a\u043e\u0434\u0435. \u0412\u0438\u0437\u0438\u0442\u043e\u0440\u044b \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043b\u0438 \u0442\u0438\u043f\u044b \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u043e\u0432, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0438 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b\u0438 \u0442\u0438\u043f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430, \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043b\u0430\u043b \u044d\u0442\u043e \u0441\u0432\u043e\u0438\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c if \u0438 switch. \u041a\u043e\u0433\u0434\u0430 \u044f \u0441\u0442\u0430\u043b \u0432\u044b\u043d\u043e\u0441\u0438\u0442\u044c \u044d\u0442\u0438 \u0447\u0430\u0441\u0442\u043d\u044b\u0435 \u0441\u043b\u0443\u0447\u0430\u0438, \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u0448\u0430\u0433\u0438 \u0441\u0442\u0430\u043b\u0438 \u0432\u0438\u0434\u043d\u044b \u0441\u0430\u043c\u0438 \u0441\u043e\u0431\u043e\u0439. IOperator \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u044c \u0438\u0445 \u044f\u0432\u043d\u043e \u0438 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u0432\u0438\u0437\u0438\u0442\u043e\u0440\u0435 \u043e\u0431\u0449\u0438\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438.\u0412\u0438\u0437\u0438\u0442\u043e\u0440 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0433\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u0442\u0430\u043a:if (!lType.TryGetOperator(visitable.Operator, out var @operator))    throw new UnsupportedOperation(        visitable.Segment, lType, visitable.Operator);var operation = new OperationDescriptor(    visitable.Operator,    OperandTypes: [lType, rType]);if (!@operator.TryGetResultType(operation, out var resultType))    throw new IncompatibleTypesOfOperands(        visitable.Segment,        left: lType,        right: rType);\u0414\u043b\u044f \u0434\u0432\u0443\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043e\u0442\u043a\u0430\u0437\u0430 \u043d\u0443\u0436\u043d\u044b \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f. \u0412\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 ~42 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u0442 \u0447\u0438\u0441\u043b\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043e\u043d\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442. \u0423 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u044f \u0435\u0441\u0442\u044c, \u043d\u043e \u0438\u043d\u0434\u0435\u043a\u0441 true \u0434\u043b\u044f \u043d\u0435\u0451 \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442. \u0420\u0430\u0437\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u0438\u0441\u043a \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u044d\u0442\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0435.\u0412\u0438\u0437\u0438\u0442\u043e\u0440 \u0442\u0430\u043a\u0436\u0435 \u0437\u043d\u0430\u0435\u0442, \u0433\u0434\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u043b\u043e\u0441\u044c \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435. \u042d\u0442\u043e\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043f\u043e\u0434 \u0440\u0443\u043a\u043e\u0439, \u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0443\u0447\u0430\u0441\u0442\u043a\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0432 \u043a\u0430\u0436\u0434\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043d\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f. \u0412\u0438\u0437\u0438\u0442\u043e\u0440 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u0438 \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0438 \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a prevType.TryGetOperator(&#171;[]&#187;, &#8230;).\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0442\u043e\u0436\u0435 \u043d\u0443\u0436\u043d\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f\u041e\u0442 IOperator \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0442\u0438\u043f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430. \u0414\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e \u0441\u0430\u043c\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f IndexRead \u0434\u043e\u0445\u043e\u0434\u0438\u0442 \u0434\u043e \u044d\u0442\u043e\u0439 \u0432\u0435\u0442\u043a\u0438 \u0432 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 Simple \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b:&#187;[]&#187; when lValue is string @string =&gt;    @string.Substring(Convert.ToInt32(rValue), 1),\u0423 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0434\u043b\u0438\u043d\u044b ~ \u0443\u0436\u0435 \u0431\u044b\u043b\u0430 \u0441\u0432\u043e\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f. \u041e\u043d \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0434\u043b\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0441\u043f\u0438\u0441\u043a\u0430\u043c\u0438 List&lt;object&gt;. \u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u043b ~ \u0434\u043b\u044f ArrayType \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u043b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u0430\u043a number. \u041d\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u0437\u044f\u0442\u044c Count:&#187;~&#187; =&gt; ((List&lt;object&gt;)value!).Count,\u041a\u043e\u0433\u0434\u0430 \u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u043b \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438, \u044d\u0442\u043e\u0442 \u0436\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u043e\u0434\u043e\u0448\u0451\u043b \u0438 \u0434\u043b\u044f \u0438\u0445 \u0434\u043b\u0438\u043d\u044b. \u0412 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0442\u0438\u043f\u043e\u0432 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043e\u0431\u0449\u0438\u0439 LengthOperator \u0434\u043b\u044f \u0441\u0442\u0440\u043e\u043a \u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432, \u0430 \u0432 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u043b \u0432\u0435\u0442\u043a\u0443 \u043d\u0430 \u0434\u0432\u0430 \u0441\u043b\u0443\u0447\u0430\u044f: list.Count \u0438 @string.Length.\u041d\u043e \u0432 \u044d\u0442\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u044f\u0442\u0430\u043b\u0430\u0441\u044c \u043e\u0448\u0438\u0431\u043a\u0430, \u043e\u0431\u0449\u0430\u044f \u0434\u043b\u044f \u043e\u0431\u043e\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432. Count \u0438 Length \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 int, \u0430 \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0432 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442 \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u044b \u043a double. \u041f\u043e\u043a\u0430 \u0434\u043b\u0438\u043d\u0430 \u043f\u043e\u043f\u0430\u0434\u0430\u043b\u0430 \u0432 \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u0443, \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0435 \u0441\u0433\u043b\u0430\u0436\u0438\u0432\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c. \u041f\u0440\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u0430 \u043e\u043d\u043e \u0432\u044b\u043b\u0435\u0437\u043b\u043e \u043d\u0430\u0440\u0443\u0436\u0443. \u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u0441\u044f \u0431\u0430\u0433:let i = 0const s = &#171;abcdef&#187;const sLen = ~swhile (i &lt; sLen) {    if (i + 1 == sLen)        &gt;&gt;&gt; &#171;i is 5&#8243;    i = i + 1}\u0426\u0438\u043a\u043b \u0434\u043e\u0445\u043e\u0434\u0438\u043b \u0434\u043e \u043a\u043e\u043d\u0446\u0430, \u043d\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043d\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u043b\u043e\u0441\u044c. \u041d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u043b\u0435\u0432\u0430 \u043e\u0442 == \u043f\u043e\u043b\u0443\u0447\u0430\u043b\u043e\u0441\u044c 6 \u0432 \u0432\u0438\u0434\u0435 double, \u0430 \u0441\u043f\u0440\u0430\u0432\u0430 \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u043e\u0441\u044c 6 \u0432 \u0432\u0438\u0434\u0435 int. \u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 \u0445\u0440\u0430\u043d\u0438\u043b\u0430 \u043e\u0431\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a\u0430\u043a object \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043b\u0430 \u0447\u0435\u0440\u0435\u0437 Equals(lValue, rValue). \u0414\u043b\u044f \u0442\u0430\u043a\u043e\u0433\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0435 double \u0438 int \u043d\u0435 \u0440\u0430\u0432\u043d\u044b. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0443\u0441\u043b\u043e\u0432\u0438\u0435 i == sLen &#8212; 1 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b\u043e: \u0432\u044b\u0447\u0438\u0442\u0430\u043d\u0438\u0435 \u0442\u043e\u0436\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b\u043e double, \u0438 \u043d\u0430 \u043d\u0443\u0436\u043d\u043e\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0442\u0438\u043f\u044b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u043b\u0438.\u0412 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u044f \u043f\u0440\u0438\u0432\u0451\u043b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u0438\u043d\u044b \u043a \u0442\u043e\u043c\u0443 \u0436\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u0430. \u0421\u0440\u0430\u0437\u0443 \u0434\u043b\u044f \u0441\u0442\u0440\u043e\u043a \u0438 \u0441\u043f\u0438\u0441\u043a\u043e\u0432:&#187;~&#187; when value is List&lt;object&gt; list =&gt; Convert.ToDouble(list.Count),&#187;~&#187; when value is string @string =&gt; Convert.ToDouble(@string.Length),\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 i is 5; \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0441\u0442\u0430\u043b \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u043e\u043d\u043d\u044b\u043c \u0442\u0435\u0441\u0442\u043e\u043c. \u0414\u043b\u044f \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u0438 \u0434\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441 \u043e\u0431\u0435\u0438\u0445 \u0441\u0442\u043e\u0440\u043e\u043d \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u0430 number. \u041e\u0448\u0438\u0431\u043a\u0430 \u0431\u044b\u043b\u0430 \u0432 \u0442\u043e\u043c, \u043a\u0430\u043a \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u0430 \u044d\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 C#. \u041e\u0434\u043d\u043e\u0433\u043e&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-499085","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/499085","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=499085"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/499085\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=499085"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=499085"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=499085"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}