{"id":471443,"date":"2025-08-21T15:00:08","date_gmt":"2025-08-21T15:00:08","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=471443"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=471443","title":{"rendered":"<span>\u0428\u0435\u0441\u0442\u0438\u0434\u0435\u0441\u044f\u0442\u0438\u043b\u0435\u0442\u043d\u0438\u0439 \u0437\u0430\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0439 \u0438 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u0430\u044f \u043a\u0440\u044b\u0441\u0430. F# \u043d\u0430 Godot. \u0427\u0430\u0441\u0442\u044c 9. \u041f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440, _Ready<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/cd\/z0\/bw\/cdz0bwswexgexeysmzxnm-ainmw.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/cd\/z0\/bw\/cdz0bwswexgexeysmzxnm-ainmw.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/cd\/z0\/bw\/cdz0bwswexgexeysmzxnm-ainmw.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0412 <a href=\"https:\/\/habr.com\/ru\/companies\/first\/articles\/926138\/\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0433\u043b\u0430\u0432\u0435<\/a> \u043c\u044b \u043d\u0435\u043d\u0430\u0434\u043e\u043b\u0433\u043e \u043f\u0440\u0435\u0440\u0432\u0430\u043b\u0438 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 F#, \u043d\u043e \u0432 \u044d\u0442\u043e\u0439 \u0432\u0441\u0451 \u0441 \u043b\u0438\u0445\u0432\u043e\u0439 \u043d\u0430\u0433\u043e\u043d\u0438\u043c, \u0442\u0430\u043a \u043a\u0430\u043a \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0443 \u043d\u0430\u0441 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440, \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u043e\u0432 (\u0441\u043d\u043e\u0432\u0430) \u0438 \u0438\u0445 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f. \u042f \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0441\u044f \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0438\u0445 \u0432 \u043e\u0434\u043d\u043e\u043c \u0442\u0435\u043a\u0441\u0442\u0435, \u043d\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u043e\u043d\u0438 \u0440\u0430\u0441\u043a\u0438\u0434\u0430\u043d\u044b \u043f\u043e \u0440\u0430\u0437\u043d\u044b\u043c \u0447\u0430\u0441\u0442\u044f\u043c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u0447\u0442\u043e \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e \u043c\u0435\u0448\u0430\u0435\u0442 \u0446\u0435\u043b\u043e\u0441\u0442\u043d\u043e\u043c\u0443 \u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u044e, \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0447\u0435\u0433\u043e \u0434\u0430\u0436\u0435 \u0432\u0435\u0441\u044c\u043c\u0430 \u0431\u0430\u0448\u043a\u043e\u0432\u0438\u0442\u044b\u0435 \u0440\u0435\u0431\u044f\u0442\u0430 \u0442\u0443\u043f\u044f\u0442 \u043a\u0430\u043a \u043c\u0430\u043b\u044c\u0447\u0438\u043a\u0438 \u0441 \u0412\u0438\u043a\u0438\u043f\u0435\u0434\u0438\u0435\u0439 \u043f\u0440\u0438 \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0438 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0434\u0440\u0435\u0432\u043d\u0435\u0433\u043e \u0420\u0438\u043c\u0430. \u0422\u043e \u0435\u0441\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0443 \u043d\u0438\u0445 \u0435\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u043e \u0432\u0441\u0435\u043c \u0437\u043d\u0430\u043d\u0438\u044f\u043c \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u0442\u0432\u0430, \u043d\u043e \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u043d\u0438 \u0441\u043e\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442 \u0441\u043b\u0430\u0431\u0435\u0435, \u0447\u0435\u043c \u0447\u0435\u043b\u043e\u0432\u0435\u043a, \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0432\u0448\u0438\u0439 \u0442\u0440\u0438\u0436\u0434\u044b \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u0433\u043e \u041c\u043e\u043c\u043c\u0437\u0435\u043d\u0430.<\/p>\n<p>\u041d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u044d\u0442\u043e\u0439 \u0433\u043b\u0430\u0432\u044b \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u0442\u043e\u0433\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 Godot \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0418\u0442\u043e\u0433\u043e\u043c \u043e\u0442\u043a\u0430\u0437\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0447\u0442\u0438 \u043f\u043e\u043b\u043d\u043e\u0435 \u0438\u0441\u0447\u0435\u0437\u043d\u043e\u0432\u0435\u043d\u0438\u0435 C# (\u043f\u043e\u043a\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430) \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u0443\u0434\u043e\u0431\u043d\u0443\u044e \u0438 \u0438\u0434\u0438\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443.<\/p>\n<details class=\"spoiler\">\n<summary>\u041e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435<\/summary>\n<div class=\"spoiler__content\">\n<h3>\u041f\u0440\u0438\u043a\u0432\u0435\u043b<\/h3>\n<ul>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/first\/articles\/806145\/\" rel=\"noopener noreferrer nofollow\">An incursion under C#. \u041f\u0440\u043e\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0435\u043c F# \u0432 Godot<\/a> <\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/904306\/\" rel=\"noopener noreferrer nofollow\">\u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>\u0428\u0435\u0441\u0442\u0438\u0434\u0435\u0441\u044f\u0442\u0438\u043b\u0435\u0442\u043d\u0438\u0439 \u0437\u0430\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0439 \u0438 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u0430\u044f \u043a\u0440\u044b\u0441\u0430. F# \u043d\u0430 Godot<\/h3>\n<ul>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/first\/articles\/846224\/\" rel=\"noopener noreferrer nofollow\">\u0427\u0430\u0441\u0442\u044c 1. \u0412\u0441\u0442\u0440\u0435\u0447\u0430 \u0441 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u043c<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/first\/articles\/850980\/\" rel=\"noopener noreferrer nofollow\">\u0427\u0430\u0441\u0442\u044c 2. \u0412\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/first\/articles\/856406\/\" rel=\"noopener noreferrer nofollow\">\u0427\u0430\u0441\u0442\u044c 3. \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b c \u043f\u0435\u0440\u0435\u0441\u0430\u0434\u043a\u0430\u043c\u0438<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/first\/articles\/904772\/\" rel=\"noopener noreferrer nofollow\">\u0427\u0430\u0441\u0442\u044c 4. \u0414\u0435\u0444\u043e\u043b\u0442\u044b, option \u0438 \u0434\u0436\u0435\u043d\u0435\u0440\u0438\u043a\u0438<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/first\/articles\/909536\/\" rel=\"noopener noreferrer nofollow\">\u0427\u0430\u0441\u0442\u044c 5. \u041e\u0448\u0438\u0431\u043a\u0438 \u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/first\/articles\/917404\/\" rel=\"noopener noreferrer nofollow\">\u0427\u0430\u0441\u0442\u044c 6. \u041a\u0430\u043a \u0434\u043e\u0431\u044b\u0442\u044c \u043d\u0435\u0447\u0442\u043e<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/first\/articles\/919448\/\" rel=\"noopener noreferrer nofollow\">\u0427\u0430\u0441\u0442\u044c 7. \u041a\u0430\u043a \u0443\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043d\u0435\u0447\u0442\u043e<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/first\/articles\/926138\/\" rel=\"noopener noreferrer nofollow\">\u0427\u0430\u0441\u0442\u044c 8. \u0417\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0449\u0438\u0439 \u043f\u043e\u0438\u0441\u043a \u043f\u0443\u0442\u0438<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/first\/articles\/939202\/\" rel=\"noopener noreferrer nofollow\">\u0427\u0430\u0441\u0442\u044c 9. \u041f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440, _Ready<\/a> \/\/ \u043c\u044b \u0437\u0434\u0435\u0441\u044c<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/details>\n<h3>\u041e\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u0438\u0437\u0430\u0446\u0438\u044f<\/h3>\n<p>\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0433\u043b\u0430\u0432\u0435 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>createPathFinder<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b\u0430 \u0434\u0440\u0443\u0433\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043e\u0442 <code>goal : Vector2I<\/code>, \u0430 \u0442\u0430 \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b\u0430 <code>Result<\/code> \u0441\u043e \u0437\u0434\u043e\u0440\u043e\u0432\u0435\u043d\u043d\u044b\u043c \u0430\u043d\u043e\u043d\u0438\u043c\u043d\u044b\u043c \u0440\u0435\u043a\u043e\u0440\u0434\u043e\u043c \u0432 <code>Ok<\/code>. \u042d\u0442\u043e\u0442 \u0440\u0435\u043a\u043e\u0440\u0434 \u0431\u044b\u043b \u043a\u0430\u043a \u0410\u043d\u0442\u0438-\u041b\u0430\u0441-\u0412\u0435\u0433\u0430\u0441. \u041e\u043d \u0432\u044b\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u043b \u043d\u0430\u0440\u0443\u0436\u0443 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0451, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u043b\u043e \u0432 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0435, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0441\u043b\u043e\u0432\u0430\u0440\u044f <code>ready<\/code>. \u0418 \u043a\u0430\u043a \u0432\u0441\u0435 \u0443\u0436\u0435 \u043f\u043e\u043d\u044f\u043b\u0438, \u043c\u043d\u0435 \u043f\u043e\u0447\u0442\u0438 \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438\u0441\u043f\u0438\u0447\u0438\u043b\u043e \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u044d\u0442\u0443 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u043d\u0430 \u0438\u0433\u0440\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435.<\/p>\n<p>\u041f\u043e \u0443\u0440\u043e\u0432\u043d\u044e \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438 <code>ready<\/code> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0438\u0431\u043b\u0438\u043d\u0433\u043e\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0438\u0441\u043a\u0430 \u043e\u0442 <code>goal<\/code>, \u0442\u0430\u043a \u0447\u0442\u043e \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0430\u043d\u043e\u043d\u0438\u043c\u043d\u044b\u0439 \u0440\u0435\u043a\u043e\u0440\u0434:<\/p>\n<pre><code class=\"fsharp\">let createPathFinder mapSize isObstacle start =     let addStep = ...     let paths = ...     let ready = ...     let readOnlyPaths = ...     let tryFind goal = ...          {|         Ready = ready.AsReadOnly()         Paths = readOnlyPaths         Start = start         IsObstacle = isObstacle         MapSize = mapSize         TryFind = tryFind     |} <\/code><\/pre>\n<p>\u041d\u043e \u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u043b, \u0442\u0430\u043a \u043a\u0430\u043a <code>createPathFinder<\/code> \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0441\u0438\u043b\u044c\u043d\u043e \u043d\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u043b\u0441\u044f \u043d\u0430 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u0442\u0438\u043f. \u041f\u043e \u0444\u0430\u043a\u0442\u0443, \u044f \u0434\u0430\u0436\u0435 \u043d\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b, \u043f\u043e\u043a\u0430 \u043d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b, \u0447\u0442\u043e \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043b\u043e\u0436\u0438\u0442\u044c \u0442\u0435\u043c\u0443 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u043e\u0432 \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0433\u043b\u0430\u0432\u044b. \u041e\u0434\u043d\u0430\u043a\u043e \u0435\u0449\u0451 \u0440\u0430\u0437 \u043a\u043e\u0432\u044b\u0440\u044f\u0442\u044c\u0441\u044f \u0432 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0435 \u043c\u044b \u043d\u0435 \u0441\u0442\u0430\u043d\u0435\u043c, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u0441\u0438\u043b\u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u044f\u0437\u044b\u043a\u0430 \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 \u0431\u043b\u0438\u0437\u043a\u0430 \u043a \u043d\u0443\u043b\u044e:<\/p>\n<pre><code class=\"fsharp\">\/\/ module PathFinder type Main (mapSize, isObstacle, start) =     let addStep = ...     let paths = ...     let ready = ...     let readOnlyPaths = ...     let tryFind goal = ...          member val Ready = ready.AsReadOnly()          member _.Paths = readOnlyPaths     member _.Start = start     member _.IsObstacle pos = isObstacle pos     member _.MapSize = mapSize          member _.TryFind goal = tryFind goal <\/code><\/pre>\n<p>\u0422\u0438\u043f <code>PathFinder.Main<\/code> \u0432 \u043e\u0431\u0449\u0438\u0445 \u0447\u0435\u0440\u0442\u0430\u0445 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438:<\/p>\n<ul>\n<li>\n<p>\u0423 \u043d\u0430\u0441 \u0442\u0435 \u0436\u0435 \u0441\u0430\u043c\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u2014 <code>mapSize<\/code>, <code>isObstacle<\/code> \u0438 <code>start<\/code>, \u0445\u043e\u0442\u044f \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043e\u043d\u0438 \u0432 \u043a\u043e\u0440\u0442\u0435\u0436\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435.<\/p>\n<\/li>\n<li>\n<p>\u0422\u0435\u043b\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0438\u043b\u043e\u0441\u044c \u043c\u0435\u0436\u0434\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0438 <code>member<\/code>-\u0430\u043c\u0438 (\u0434\u0430\u043b\u044c\u0448\u0435 \u0431\u0443\u0434\u0443 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u00ab\u0437\u043e\u043d\u043e\u0439\/\u0441\u0435\u043a\u0446\u0438\u0435\u0439 <code>let<\/code>\u00bb).<\/p>\n<\/li>\n<li>\n<p>\u0417\u043e\u043d\u0430 <code>member<\/code> \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430. \u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0438\u043d\u0430\u0447\u0435, \u043d\u043e \u0441\u043c\u044b\u0441\u043b\u043e\u0432\u0430\u044f \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u0438\u0441\u0447\u0435\u0437\u0430\u044e\u0449\u0435 \u043c\u0430\u043b\u0430.<\/p>\n<\/li>\n<\/ul>\n<p>\u0421\u043e\u0432\u043e\u043a\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0438 \u0437\u043e\u043d\u044b <code>let<\/code> \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <strong>\u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u043c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u043e\u043c<\/strong>. \u042d\u0442\u043e \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u0444\u0438\u0447\u0430 F# \u043f\u0440\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u00ab\u043e\u0431\u044b\u0447\u043d\u044b\u0445\u00bb \u043a\u043b\u0430\u0441\u0441\u043e\u0432. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0435\u0439, \u043c\u044b \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0438\u0448\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u0441\u043a\u043e\u0443\u043f, \u0438 \u043b\u0438\u0448\u044c \u043a\u043e\u0433\u0434\u0430 \u043e\u043d \u0433\u043e\u0442\u043e\u0432, \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u00ab\u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0442\u044c\u00bb \u0435\u0433\u043e \u0432 <code>member<\/code>-\u044b \u0434\u043b\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044f. \u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u044f\u0437\u044b\u043a\u043e\u0432 (\u0442\u0438\u043f\u0430 C#) \u043c\u044b \u0434\u0432\u0438\u0436\u0435\u043c\u0441\u044f \u0432 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438, \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0434\u0435\u043a\u043b\u0430\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u043e\u043b\u044f \u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0442\u0438\u043f\u0430, \u0438 \u043b\u0438\u0448\u044c \u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u043f\u043e\u0442\u043e\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u0438\u0445 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u041f\u0440\u0438\u0447\u0451\u043c \u0438\u043d\u043e\u0433\u0434\u0430 \u043e\u043d\u0430 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0431\u043e\u043a\u0443, \u0447\u0442\u043e \u0432\u044b\u0432\u0430\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u0442\u0438\u043f\u0430. \u041f\u0440\u0438 \u0431\u043e\u043b\u044c\u0448\u043e\u043c \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u043d\u0430 F# \u043c\u043e\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u0432 C#-\u043d\u043e\u0439 \u043c\u0430\u043d\u0435\u0440\u0435, \u043d\u043e \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043a\u043e\u043d\u0442\u0440\u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0438\u0432\u043d\u043e, \u0435\u0441\u043b\u0438 \u0440\u0435\u0447\u044c \u043d\u0435 \u043e \u0445\u0430\u0440\u0434\u043a\u043e\u0440\u043d\u043e\u043c \u0438\u043d\u0442\u0435\u0440\u043e\u043f\u0435 \u0441 \u0436\u0435\u043b\u0435\u0437\u043e\u043c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0431\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043b \u043d\u043e\u0432\u0438\u0447\u043a\u0430\u043c \u0432\u0441\u044f\u0447\u0435\u0441\u043a\u0438 \u0438\u0437\u0431\u0435\u0433\u0430\u0442\u044c \u044d\u0442\u043e\u0433\u043e, \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043a\u0430\u0436\u0443\u0449\u0443\u044e\u0441\u044f \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e\u0441\u0442\u044c. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0435\u0431\u0435 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441 \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b, \u0447\u0442\u043e \u043f\u043e\u043c\u043e\u0447\u044c \u0432\u0430\u043c (\u0431\u0435\u0437 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e\u0433\u043e \u043f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u044f) \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043a\u043e\u043c\u0443.<\/p>\n<p>\u0412\u0441\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430 \u0438 \u0435\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0442 \u043e\u0431\u0449\u0438\u0439 \u0441\u043a\u043e\u0443\u043f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432\u043e \u0432\u0441\u0435\u0445 <code>member<\/code>-\u0430\u0445 \u0442\u0438\u043f\u0430. \u0414\u043b\u044f \u043f\u043e\u0434\u0447\u0451\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u043a\u0442\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043f\u0440\u0438\u043d\u0443\u0436\u0434\u0430\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u0441\u0435\u043a\u0446\u0438\u044e <code>let<\/code> \u0441\u0442\u0440\u043e\u0433\u043e \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0442\u0438\u043f\u0430 \u0434\u043e \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f <code>member<\/code>-\u043e\u0432. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 (\u0438\u043b\u0438 \u0442\u043e\u0447\u043d\u0435\u0435 \u00ab\u043b\u0438\u0447\u043d\u044b\u0439\u00bb) \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e (<code>static let<\/code>), \u043d\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440, \u0430 \u043d\u0435 \u0432\u0435\u0441\u044c \u0442\u0438\u043f. \u041b\u043e\u0433\u0438\u0447\u043d\u043e, \u0447\u0442\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0432\u0438\u0434\u043d\u044b \u0432 \u0437\u043e\u043d\u0435 \u00ab\u043b\u0438\u0447\u043d\u043e\u0433\u043e\u00bb \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u043e\u043d\u0430 <code>static let<\/code> (\u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u0435\u0441\u0442\u044c) \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0437\u043e\u043d\u0435 <code>let<\/code>. \u0421\u043a\u043e\u0443\u043f \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0432\u0430\u0442\u0435\u043d \u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0447\u0435\u0440\u0435\u0437 <code>this._<\/code>-\u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442, \u0438 <strong>\u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430<\/strong>. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0435\u0441\u043b\u0438 \u0432 <code>Equals<\/code> \u043d\u0430\u0434\u043e \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0441\u0432\u043e\u0439 <code>myValue<\/code> \u0441 \u0447\u0443\u0436\u0438\u043c, \u0442\u043e \u0435\u0433\u043e \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 <code>member private this.MyValue = myValue<\/code>.<\/p>\n<p>\u041f\u043e\u0440\u044f\u0434\u043e\u043a \u043f\u0440\u0438\u0432\u044f\u0437\u043e\u043a \u0432\u0430\u0436\u0435\u043d. \u041e\u043d\u0438 \u043f\u043e\u0434\u0447\u0438\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u043b\u044c\u0437\u044f \u0441\u043e\u0441\u043b\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0430 \u043f\u043e\u0437\u0436\u0435. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0430 \u043d\u0438\u0437\u043e\u0432\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u0440\u0438\u0432\u044f\u0437\u043e\u043a \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u043f\u043e\u043b\u044f \u0438 \u043c\u0435\u0442\u043e\u0434\u044b \u0442\u0438\u043f\u0430, \u0442\u0430\u043a \u0447\u0442\u043e \u0440\u0435\u0447\u044c \u0438\u0434\u0451\u0442 \u043d\u0435 \u043e \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f\u0445, \u0430 \u043e \u0440\u0430\u0437\u0434\u0432\u0438\u0433\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0448\u043e\u0440\u0430\u0445. \u041f\u043e\u043b\u0435 \u00ab\u0432\u0441\u0435\u0433\u0434\u0430\u00bb \u0435\u0441\u0442\u044c, \u043d\u043e \u043c\u044b \u0435\u0433\u043e \u043d\u0435 \u0443\u0432\u0438\u0434\u0438\u043c, \u043f\u043e\u043a\u0430 \u043e\u043d\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0433\u043e\u0442\u043e\u0432\u043e \u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e. \u042d\u0442\u043e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0435 \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441 <code>mutable<\/code> \u0438\u043b\u0438 <code>Unchecked.defaultof<\/code>. \u041e\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u0434\u0435\u0440\u0436\u0438\u0442 \u0442\u0438\u043f \u0432 \u0442\u043e\u043d\u0443\u0441\u0435, \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e \u0432\u044b\u0440\u0435\u0437\u0430\u044f \u0432\u044b\u0431\u044b\u0432\u0448\u0438\u0435 \u043f\u043e\u043b\u044f. \u0412\u0441\u0451 \u0447\u0442\u043e \u043d\u0435 \u0431\u044b\u043b\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043e, \u0442\u043e \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u0438 \u0432\u0441\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 <code>member<\/code>-\u044b (\u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0435\u0441\u0442\u044c) \u0432\u0437\u0432\u043e\u044e\u0442 \u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438.<\/p>\n<p>\u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043a\u0438\u043d\u0443\u0442\u044c \u0438\u0437 \u0442\u0438\u043f\u0430 \u043e\u0442\u0441\u043b\u0443\u0436\u0438\u0432\u0448\u0438\u0435 \u0441\u0432\u043e\u0451 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0441\u043a\u043e\u0443\u043f\u0430. \u041e\u043d\u0438 \u043e\u0441\u0442\u0430\u043d\u0443\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0443\u0442\u0438\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043f\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c. \u041e\u0434\u043d\u0430\u043a\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u043c\u0451\u043d, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0442\u044c \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438, \u043d\u0435\u0432\u043e\u0441\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043f\u043e\u0434 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>let mutable<\/code> \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u043f\u043e\u043b\u044f, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0441 \u043d\u0438\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f. \u0428\u0430\u0434\u043e\u0432\u0438\u043d\u0433 \u043d\u0435 \u043f\u043e\u043c\u043e\u0436\u0435\u0442. \u041c\u043d\u0435 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043b\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u0435\u0434\u0443\u0433\u0430\u0434\u0430\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430, \u043d\u043e \u0442\u0438\u043f\u043e\u0432\u044b\u0435 \u0441\u043b\u0443\u0447\u0430\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043a\u043e\u0432\u044b\u0440\u044f\u0442\u044c \u0432 <a href=\"https:\/\/sharplab.io\" rel=\"noopener noreferrer nofollow\">SharpLab<\/a>. \u0412 \u0446\u0435\u043b\u043e\u043c \u044f \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u044e \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0437\u0430\u0441\u043e\u0440\u044f\u0442\u044c \u0441\u043a\u043e\u0443\u043f, \u0431\u043b\u0430\u0433\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0443\u0439\u043c\u0430.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043d\u0435\u0434\u043e\u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442 \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e <code>use<\/code> \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430. \u0417\u0430 \u0432\u0441\u0435 \u0433\u043e\u0434\u044b \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u044f \u0442\u0430\u043a \u0438 \u043d\u0435 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u043b\u0441\u044f \u0441 \u0434\u043e\u043c\u0435\u043d\u043e\u043c, \u0433\u0434\u0435 \u0431\u044b \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u043a \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0435\u0445\u0430\u0442\u044c \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u00ab\u043d\u0435\u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439\u00bb \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 (\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0443, \u0448\u0442\u0443\u043a\u0430 \u0440\u0435\u0434\u043a\u0430\u044f), \u043d\u043e \u043f\u043e \u043c\u0435\u0440\u0435 \u043f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0432 GPU-\u0434\u0435\u0431\u0440\u0438 \u044f \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u044e, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u0441\u0442\u0430\u043d\u0435\u0442. \u041f\u043e\u043a\u0430 \u0436\u0435 \u043c\u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0441\u043a\u043e\u0443\u043f\u043e\u0432 \u0438\u043b\u0438 \u0432 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0440\u0443\u0447\u043d\u043e\u0433\u043e <code>Dispose<\/code>:<\/p>\n<pre><code class=\"fsharp\">type MyType (path) =     let content =         use reader = System.IO.File.OpenRead path         ... <\/code><\/pre>\n<h4>Just do it<\/h4>\n<p>\u041f\u0440\u0430\u0437\u0434\u043d\u043e \u0448\u0430\u0442\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u043c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435 \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u044b. \u0412\u0441\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438, \u043b\u0438\u0431\u043e \u044f\u0432\u043d\u043e \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0447\u0435\u0440\u0435\u0437 <code>do<\/code>. \u042d\u0442\u043e \u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439, \u043a\u043e\u0433\u0434\u0430 <code>do<\/code>-\u043d\u043e\u0442\u0430\u0446\u0438\u044f \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430. \u041f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b\u043b\u043e \u0442\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u043d\u043e, \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0442\u043e\u0447\u043d\u043e \u043d\u0435 \u043c\u043e\u0433\u0443, \u043d\u043e \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0434\u0435\u043b\u043e \u0432 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0435 \u043c\u0435\u0436\u0434\u0443 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c (<code>static do<\/code>) \u0438 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u043c (<code>do<\/code>) \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430\u043c\u0438. \u0413\u0440\u0430\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u044f\u0432\u043e\u0447\u043d\u044b\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u043c. \u0415\u0441\u043b\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043d\u0430\u0447\u043d\u0451\u0442 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u044c \u043d\u0435\u044f\u0432\u043d\u044b\u0439 <code>do<\/code> \u043a \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0438\u0437 \u0441\u0442\u043e\u0440\u043e\u043d, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043b\u0430\u0431\u044b\u0439, \u043d\u043e \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u0438\u0442\u043e\u043a \u0431\u0430\u0433\u043e\u0432 \u0437\u0430 \u0441\u0447\u0451\u0442 <code>unit<\/code> \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u043e\u0432 (\u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u043d\u0430 \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f\u0445). \u0421\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0441\u044f \u043b\u0438\u0448\u044c \u0441 \u0432\u0432\u043e\u0434\u043e\u043c \u043a\u0430\u043a\u043e\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c <code>static end<\/code>, \u0447\u0442\u043e \u0432 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0439 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0435 \u043e\u0447\u0435\u043d\u044c \u0441\u043e\u043c\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e.<\/p>\n<p>\u041e\u0431\u0440\u0430\u0449\u0430\u044e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u00ab\u043e\u0434\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 (\u0442\u043e\u0447\u043d\u0435\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435) \u2014 \u043e\u0434\u0438\u043d <code>do<\/code>\u00bb \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0432\u0437\u044f\u0442\u044b\u0445 \u043a\u043e\u043b\u043b\u0435\u043a\u0442\u0438\u0432\u043e\u0432. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0437\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c\u043e\u0439 \u0432 \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0443 \u043b\u043e\u0433\u0438\u043a\u0438 \u044f \u043f\u0438\u0448\u0443 \u0438 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"fsharp\">do a () do b 42 do c () <\/code><\/pre>\n<p>\u0418 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"fsharp\">do  \/\/ \u041f\u0443\u0441\u0442\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430.     let value = 42 \/\/ \u041e\u0442\u0441\u0442\u0443\u043f \u0432 4.     a ()     b value     c () <\/code><\/pre>\n<p>\u041f\u0435\u0440\u0432\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u043d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u043d\u0438\u043a\u0430\u043a\u0438\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0438\u0445 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u043d\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u043a <code>do<\/code>, \u0430 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u0434\u0443\u0442 \u0441 \u043e\u0442\u0441\u0442\u0443\u043f\u043e\u043c \u0432 4 \u0437\u043d\u0430\u043a\u0430, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0432\u044b\u0434\u0435\u043b\u044f\u0442\u044c\u0441\u044f \u043d\u0430 \u0444\u043e\u043d\u0435 <code>let<\/code>. \u0412\u0441\u0451 \u044d\u0442\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u043d\u043e\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a \u043c\u0435\u0436\u0434\u0443 \u0431\u043b\u043e\u043a\u0430\u043c\u0438 <code>do<\/code> \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 <code>Alt + Up\/Down<\/code> (\u0432 VS). \u041d\u0443\u0436\u043d\u043e \u044d\u0442\u043e \u043d\u0435\u0447\u0430\u0441\u0442\u043e, \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0434\u043b\u044f \u0441\u0446\u0435\u043d \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c <code>unit<\/code>-\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439.<\/p>\n<h3>\u0413\u0440\u0430\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 member \u0438 let<\/h3>\n<p>\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e <code>member<\/code>-\u044b \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430. \u0412 \u0441\u043a\u043e\u0443\u043f\u0435 \u0438\u0445 \u043d\u0435\u0442, \u0438 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043d\u0438\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f <code>self<\/code>-\u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 (\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0435\u0431\u044f), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u0431\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e <code>type Main (...) as this =<\/code>. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0434\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430 <code>member<\/code>-\u044b \u0442\u0438\u043f\u0430 (\u043d\u0435 \u043f\u0440\u0435\u0434\u043a\u043e\u0432) \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044e (\u0441\u043c. \u0433\u043b\u0430\u0432\u0443 7).<\/p>\n<p>\u041f\u0440\u0438 \u0442\u0430\u043a\u0438\u0445 \u0432\u0432\u043e\u0434\u043d\u044b\u0445 \u043d\u0438\u0448\u0430 \u0430\u0432\u0442\u043e\u0441\u0432\u043e\u0439\u0441\u0442\u0432 (<code>member val<\/code>) \u0440\u0430\u0434\u0438\u043a\u0430\u043b\u044c\u043d\u043e \u0441\u0443\u0436\u0430\u0435\u0442\u0441\u044f. \u0422\u0430\u043c \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e, \u0447\u0442\u043e \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u043c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435. \u0421 \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438 \u0438 \u043e\u0431\u044b\u0447\u043d\u044b\u043c\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0449\u0435. \u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u0432\u043e\u0451\u043c \u043e\u043d\u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0443\u0436\u0435 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u0438\u0442\u043e\u0433\u043e\u0432\u043e\u043c <code>member<\/code>. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e <code>let tryFind<\/code> \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043c\u0435\u043d\u0451\u043d \u043d\u0430:<\/p>\n<pre><code class=\"fsharp\">member this.TryFind goal =     if not ^ inMap mapSize goal then Result.Error OutOfBounds     elif isObstacle goal then Result.Error Obstacle else     match ready.TryFind goal with     ... <\/code><\/pre>\n<p><code>let readOnlyPaths<\/code> \u0431\u0443\u0434\u0443\u0447\u0438 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0451\u043d \u0432 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e <code>Paths<\/code>, \u0430 <code>TryFind<\/code>, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u0435\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a <code>this<\/code>, \u0441\u043c\u043e\u0436\u0435\u0442 \u0435\u0433\u043e \u043e\u0442\u0442\u0443\u0434\u0430 \u0437\u0430\u0431\u0440\u0430\u0442\u044c:<\/p>\n<pre><code class=\"fsharp\">member val Paths = paths.AsReadOnly() <\/code><\/pre>\n<p>\u0421\u043a\u043e\u043b\u044c\u043a\u043e \u043b\u043e\u0433\u0438\u043a\u0438 \u043d\u0430\u0434\u043e \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 <code>let<\/code>, \u0430 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432 <code>member<\/code> \u2014 \u0432\u043e\u043f\u0440\u043e\u0441 \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u043e\u043d\u043d\u044b\u0439. \u0418\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u043b\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044f \u0431\u0443\u0434\u0435\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439. \u041d\u043e \u0443 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0432 \u0435\u0441\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 KPI \u043d\u0430 \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e \u0447\u0438\u0441\u043b\u0430 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0446\u0438\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d\u0438 \u0437\u0430\u043c\u0435\u0449\u0430\u044e\u0442 <code>member<\/code>-\u0430\u043c\u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u043f\u0440\u0438\u0432\u044f\u0437\u043e\u043a. \u042f \u043d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u043d\u043e\u0448\u0443\u0441\u044c \u043a \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0434\u0445\u043e\u0434\u0443 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a \u0441\u0432\u0435\u0436\u0435\u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c \u0442\u0438\u043f\u0430\u043c, \u043d\u043e \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e \u043f\u0435\u0440\u0435\u0433\u043e\u043d\u043a\u0435 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 <code>let<\/code>. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u044d\u0442\u043e \u043b\u0438\u0448\u043d\u044f\u044f \u0434\u0432\u0438\u0436\u0443\u0445\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435 \u043f\u043b\u043e\u0445\u043e \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u0433\u0438\u0442\u0430, \u0430 \u0432 \u043c\u0435\u0440\u0436-\u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0435 \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043f\u043e \u043c\u043e\u0438\u043c \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f\u043c, \u0442\u043e, \u0447\u0442\u043e \u043e\u0434\u043d\u0430\u0436\u0434\u044b <strong>\u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d\u043e<\/strong> \u0431\u044b\u043b\u043e \u0437\u0430\u043a\u0438\u043d\u0443\u0442\u043e \u0432 <code>let<\/code>, \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0442\u044f\u0433\u043e\u0442\u0435\u0442\u044c \u043a \u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043f\u043e\u0441\u043b\u0430\u0431\u043b\u0435\u043d\u0438\u044f. \u0412-\u0442\u0440\u0435\u0442\u044c\u0438\u0445, \u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0441\u0442\u044c \u0438 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u00ab\u0432\u043e\u0432\u043d\u0435\u00bb \u0443 <code>let<\/code> \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0432\u044b\u0448\u0435, \u0447\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u043c \u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u043c <code>member<\/code>-\u043e\u0432 \u2014 \u043e\u043d\u0438 \u0438\u043c\u0435\u044e\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u043e \u0432\u0441\u0435\u043c\u0443 \u0442\u0438\u043f\u0443.<\/p>\n<p>\u0417\u043e\u043d\u0430 <code>member<\/code>-\u043e\u0432 \u0432\u0435\u0434\u0451\u0442 \u0441\u0435\u0431\u044f \u043a\u0430\u043a \u0433\u0440\u0443\u043f\u043f\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 <code>rec ... and<\/code>. \u0412\u0441\u0435 \u0432\u0438\u0434\u044f\u0442 \u0432\u0441\u0435\u0445 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f. \u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u0441\u0451 \u0435\u0449\u0451 \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0432\u044b\u0432\u043e\u0434\u0435 \u0442\u0438\u043f\u043e\u0432, \u043d\u043e \u0432 \u0446\u0435\u043b\u043e\u043c \u043c\u044b \u043d\u0438\u0447\u0435\u043c \u043d\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u044b. \u041f\u0438\u0441\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u043e\u0449\u0435, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043a\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0448\u044c\u0441\u044f \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e, \u0438\u0431\u043e \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u0445 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c. \u042d\u0442\u043e \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u043a\u0430 \u043d\u0430 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u044e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0438 \u0437\u0430\u0432\u0442\u0440\u0430. \u0421 \u0440\u043e\u0441\u0442\u043e\u043c \u043e\u043f\u044b\u0442\u0430 \u0435\u0451 \u043e\u0441\u0442\u0440\u043e\u0442\u0430 \u0440\u0430\u0434\u0438\u043a\u0430\u043b\u044c\u043d\u043e \u0441\u043d\u0438\u0437\u0438\u0442\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u0432\u044b \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u0432 <code>let<\/code>-\u0431\u0443\u043b\u044c\u0434\u043e\u0437\u0435\u0440, \u043d\u043e \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0431\u0435\u0440\u0435\u0447\u044c \u0432\u0440\u0435\u043c\u044f, \u0443\u0436\u0435 \u0437\u0430\u0442\u0440\u0430\u0447\u0435\u043d\u043d\u043e\u0435 \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u0438\u043f\u0430.<\/p>\n<p>\u0412 \u044f\u0437\u044b\u043a\u0435 \u0435\u0441\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 <code>member<\/code> \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u0435\u043d \u0438 \u043e\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0441\u043a\u043e\u0443\u043f \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0442\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043e\u0442 <code>self<\/code>-\u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430:<\/p>\n<pre><code class=\"fsharp\">\/\/ \u041c\u0435\u0442\u043e\u0434, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u0440\u0443\u0433\u0438\u0435 `member`-\u044b. member this.TryFind goal = ...  \/\/ \u041c\u0435\u0442\u043e\u0434 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 `member`-\u044b. member _.TryFind goal = ... <\/code><\/pre>\n<p><em>\u0414\u043e\u0441\u0442\u0443\u043f \u043a <\/em><code><em>member<\/em><\/code><em>-\u0430\u043c \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u0435\u0440\u043d\u0443\u0442\u044c, \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0442\u0430\u0449\u0438\u0442\u044c <\/em><code><em>this<\/em><\/code><em> \u0438\u0437 <\/em><code><em>as this<\/em><\/code><em>, \u043d\u043e \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e\u0435 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0432\u0435\u043d\u0446\u0438\u0438.<\/em><\/p>\n<h3>\u0420\u0430\u0441\u043f\u0438\u043b\u0438\u0432\u0430\u043d\u0438\u0435 \u0442\u0438\u043f\u0430<\/h3>\n<p>\u041c\u044b \u043c\u043e\u0436\u0435\u043c \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0434\u0438\u0430\u043c\u0435\u0442\u0440\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u043e\u0433\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0430, \u0435\u0441\u043b\u0438 \u0432\u044b\u043d\u0435\u0441\u0435\u043c <code>member<\/code> \u0432 <code>type extensions<\/code>:<\/p>\n<pre><code class=\"fsharp\">type Main with     member this.Find goal =         match this.TryFind goal with         | Ok ok -&gt; ok         | Result.Error err -&gt; failwith $\"%A{err}\" <\/code><\/pre>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0443 <code>this.Find<\/code> \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0441\u043a\u043e\u0443\u043f\u0443 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u043e\u0432 \u0438 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u043c \u0447\u043b\u0435\u043d\u0430\u043c. \u041e\u043d \u0441\u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0435 API. \u0423 \u043d\u0430\u0441 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u044f, \u0447\u0442\u043e <code>Main<\/code> \u043f\u0440\u0438 \u0441\u0432\u043e\u0451\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b <code>Find<\/code>. \u0412 \u0441\u043e\u0432\u043e\u043a\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0432\u0442\u043e\u0440\u0438\u0447\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u043d\u0435\u0441\u0435\u043d\u043d\u043e\u0433\u043e <code>member<\/code>-\u0430 \u043f\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044e \u043a \u044f\u0434\u0440\u0443 \u0442\u0438\u043f\u0430. \u042f \u0432\u0438\u0434\u0435\u043b \u043a\u043e\u0434\u043e\u0432\u044b\u0435 \u0431\u0430\u0437\u044b, \u0433\u0434\u0435 \u044d\u0442\u043e \u043f\u044b\u0442\u0430\u043b\u0438\u0441\u044c \u043e\u0442\u043c\u0435\u0447\u0430\u0442\u044c \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445, \u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0442\u0430\u043a\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043b\u0443\u0447\u0448\u0435.<\/p>\n<p>\u041d\u0430\u043c \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u043d\u043e\u0441\u0438\u0442\u044c \u0432\u0442\u043e\u0440\u0438\u0447\u043d\u044b\u0435 \u0447\u043b\u0435\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043e\u0434\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u0430. \u0418\u0445 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u043d\u043e\u0433\u043e. \u0422\u043e\u0433\u0434\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c\u0441\u044f \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0448\u0430\u0433\u0435 \u0441 \u043f\u043e\u043f\u0440\u0430\u0432\u043a\u043e\u0439 \u043d\u0430 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0441\u043e \u0432\u0441\u0435\u0445 \u043f\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0441\u0442\u0430\u0434\u0438\u0439. \u0422\u0430\u043a\u0430\u044f \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u043e\u0441\u0442\u044c \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u043e\u0434\u0438\u043d \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0439 <code>rec .. and<\/code> \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0433\u0440\u0443\u043f\u043f \u043f\u043e\u043c\u0435\u043d\u044c\u0448\u0435, \u0433\u0434\u0435, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043a\u0430\u0436\u0434\u0430\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0433\u0440\u0443\u043f\u043f\u0430 \u0432\u0441\u0451 \u043c\u0435\u043d\u044c\u0448\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u0442\u0438\u043f\u0443 \u0438 \u0432\u0441\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f. \u0412\u0430\u0436\u043d\u044b\u043c \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e \u0432 \u0440\u0430\u0437\u0440\u044b\u0432\u0435 \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0447\u0435\u0433\u043e-\u0442\u043e \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 DU \u0434\u043b\u044f \u0437\u0430\u043a\u043e\u0432\u044b\u0440\u0438\u0441\u0442\u043e\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0438\u043b\u0438 \u0435\u0449\u0451 \u043e\u0434\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435, \u043d\u043e \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0442\u0438\u043f\u0430. \u042d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0446\u0438\u043a\u043b\u0438\u0447\u043d\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0448\u0430\u0433 \u0434\u043b\u044f \u0446\u0435\u043b\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u044b \u0441\u0438\u043d\u043e\u043d\u0438\u043c\u0438\u0447\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0438 \u043b\u0438\u0448\u044c \u043f\u043e\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u044d\u0442\u0430\u043f\u0443.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0443 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u043d\u0430\u0431\u043e\u0440 <code>SCDU<\/code>-\u043e\u0431\u0451\u0440\u0442\u043e\u043a \u043d\u0430\u0434 <code>RID<\/code>-\u0430\u043c\u0438 \u0438\u0437 <code>RenderingServer<\/code>:<\/p>\n<pre><code class=\"fsharp\">type [&lt;RequireQualifiedAccess&gt;] CanvasId = { AsRid : Rid } type [&lt;RequireQualifiedAccess&gt;] TextureId = { AsRid : Rid } type [&lt;RequireQualifiedAccess&gt;] ViewportId = { AsRid : Rid } type [&lt;RequireQualifiedAccess&gt;] MaterialId = { AsRid : Rid } type [&lt;RequireQualifiedAccess&gt;] CanvasItemId = { AsRid : Rid } <\/code><\/pre>\n<p>\u042d\u0442\u043e \u0440\u0435\u043a\u043e\u0440\u0434\u044b \u0441 \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u043e\u0439 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0439. \u041e\u043d\u0438 \u0432 \u0446\u0435\u043b\u043e\u043c \u0441\u0430\u043c\u043e\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b, \u043d\u043e \u043a \u043d\u0438\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043a\u0440\u0443\u0442\u0438\u0442\u044c \u043d\u0430\u0431\u043e\u0440 \u0445\u0435\u043b\u043f\u0435\u0440\u043e\u0432:<\/p>\n<pre><code class=\"fsharp\">type TextureId with     member this.Free () = RenderingServer.FreeRid this.AsRid     member this.AsDisposable () = IDisposable.create this.Free          static member Wrap rid = { AsRid = rid }     static member Unwrap id = id.AsRid  type Texture with     member this.TextureId = TextureId.Wrap ^ this.GetRid()  ...  type CanvasItemId with        member this.Free () = RenderingServer.FreeRid this.AsRid     member this.AsDisposable () = IDisposable.create this.Free          static member Wrap rid = { AsRid = rid }     static member Unwrap id = id.AsRid     static member Create () = CanvasItemId.Wrap ^ RenderingServer.CanvasItemCreate()  type CanvasItem with     member this.CanvasItemId = CanvasItemId.Wrap ^ this.GetCanvasItem() <\/code><\/pre>\n<p>\u0422\u0430\u043a\u0430\u044f \u043f\u0430\u0440\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0435\u0441\u0442\u044c \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440. \u041e\u043d\u0438 \u043f\u043e\u0447\u0442\u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u044b, \u043d\u043e <code>TextureId<\/code> \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u043e\u043c\u0443 <code>Texture<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0448\u044c. \u041f\u0440\u0438 \u0447\u0442\u0435\u043d\u0438\u0438 \u0441\u0435\u0439 \u0444\u0430\u043a\u0442 \u043c\u043e\u0433 \u0431\u044b \u043e\u0442 \u043d\u0430\u0441 \u0443\u0441\u043a\u043e\u043b\u044c\u0437\u043d\u0443\u0442\u044c, \u0435\u0441\u043b\u0438 \u0431\u044b \u0432\u0441\u0435 \u044d\u0442\u0438 <code>member<\/code>-\u044b \u0431\u044b\u043b\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u0442\u0438\u043f\u0430\u0445 (\u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043a\u043e\u0434 \u043d\u0438\u0436\u0435), \u043d\u043e \u0432 \u0447\u0435\u0440\u0435\u0434\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0435 \u0431\u0440\u043e\u0441\u0430\u0435\u0442\u0441\u044f \u0432 \u0433\u043b\u0430\u0437\u0430.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043a \u044d\u0442\u0438\u043c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043a\u0440\u0443\u0442\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441 <code>RenderingServer<\/code>:<\/p>\n<pre><code class=\"fsharp\">type CanvasItemId with     member this.SetParent parent =         RenderingServer.CanvasItemSetParent(this.AsRid, parent.AsRid)     ...      member this.Clear () =         RenderingServer.CanvasItemClear this.AsRid     ...      member this.AddPolyline (points, colors, ?width, ?antialiased) =         RenderingServer.CanvasItemAddPolyline(this.AsRid, points, colors, ?width = width, ?antialiased = antialiased)     member this.AddPolygon (points, colors, ?uvs, ?textureId) =         let texture = Option.map TextureId.Unwrap textureId         RenderingServer.CanvasItemAddPolygon(this.AsRid, points, colors, ?uvs = uvs, ?texture = texture)     member this.AddLine (a, b, color, ?lineWidth, ?antialiased) =         RenderingServer.CanvasItemAddLine(this.AsRid, a, b, color, ?width = lineWidth, ?antialiased = antialiased) <\/code><\/pre>\n<p><em>\u0412 \u044d\u0442\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u043b\u044e\u0434\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0447\u0438\u0442\u0430\u043b\u0438 <\/em><a href=\"https:\/\/habr.com\/ru\/articles\/553742\/\" rel=\"noopener noreferrer nofollow\"><em>Godot \u2014 \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u0435\u0437 \u043f\u0440\u0430\u0432\u0438\u043b<\/em><\/a><em>, \u0443\u0434\u0438\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0442\u043e\u043c\u0443 \u0444\u0430\u043a\u0442\u0443, \u0447\u0442\u043e \u043c\u0435\u0442\u043e\u0434\u044b \u043f\u0440\u0438\u043a\u0440\u0443\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043a \u0442\u0438\u043f\u0443 <\/em><code><em>&lt;Entity&gt;Id<\/em><\/code><em>, \u0430 \u043d\u0435 \u043a \u0442\u0438\u043f\u0443 <\/em><code><em>&lt;Entity&gt;<\/em><\/code><em>.<\/em> <em>\u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0430\u0448 <\/em><code><em>&lt;Entity&gt;Id<\/em><\/code><em> \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a <\/em><code><em>&lt;Entity&gt;<\/em><\/code><em> \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a SQL \u043a <\/em><code><em>EntityFramework<\/em><\/code><em>.<\/em> <em>\u0412\u0442\u043e\u0440\u043e\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u0439, \u043d\u043e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0443\u0436\u0435\u043d \u0432\u0442\u043e\u0440\u043e\u0439.<\/em> <em>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <\/em><code><em>CanvasItem<\/em><\/code><em> \u2014 \u044d\u0442\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a <\/em><code><em>Node<\/em><\/code><em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u0435\u0435\u0442 \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u043a\u043e\u0435 API \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043d\u0435\u043a\u0438\u043c \u00ab\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c \u0445\u043e\u043b\u0441\u0442\u0430\u00bb (\u043d-\u0440, <\/em><code><em>Control :&gt; CanvasItem<\/em><\/code><em>).<\/em> <em>\u041e\u0434\u043d\u0430\u043a\u043e \u0441 \u044d\u0442\u0438\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b <\/em><code><em>RenderingServer<\/em><\/code><em>, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c <\/em><code><em>RID<\/em><\/code><em> \u044d\u0442\u043e\u0433\u043e <\/em><code><em>CanvasItem<\/em><\/code><em> (<\/em><code><em>this.GetCanvasItem()<\/em><\/code><em>).<\/em> <em>\u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0431\u0435\u0437 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0438\u043c\u0451\u043d\u043d\u043e\u0439 \u043d\u043e\u0434\u044b.<\/em> <em>\u042d\u0442\u043e \u0447\u0443\u0442\u043e\u0447\u043a\u0443 \u0434\u0435\u0448\u0435\u0432\u043b\u0435, \u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0438\u0437-\u043f\u043e\u0434 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0434\u0432\u0438\u0436\u043a\u0430.<\/em> <em>\u041d\u0430 \u044d\u0442\u043e\u043c \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043e \u0432\u044b\u0448\u0435\u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u043e\u0435 \u00ab\u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u0435\u0437 \u043f\u0440\u0430\u0432\u0438\u043b\u00bb.<\/em> <em>\u0422\u0430\u043a \u0447\u0442\u043e \u043d\u0430\u0448 <\/em><code><em>CanvasItemId<\/em><\/code><em> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0438\u043c \u0437\u0432\u0435\u043d\u043e\u043c, \u0447\u0435\u043c-\u0442\u043e \u0441\u0440\u0435\u0434\u043d\u0438\u043c \u043c\u0435\u0436\u0434\u0443 <\/em><code><em>CanvasItem<\/em><\/code><em> \u0438 <\/em><code><em>RID<\/em><\/code><em>.<\/em> <em>\u0418\u043c \u043c\u043e\u0436\u043d\u043e \u0443\u0434\u043e\u0431\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u043d \u043d\u0435 \u0436\u0440\u0451\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043d\u043e\u0434\u044b.<\/em><\/p>\n<p>\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f \u043d\u0435 \u043f\u043e\u0445\u043e\u0436\u0438 \u0434\u0440\u0443\u0433 \u043d\u0430 \u0434\u0440\u0443\u0433\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0438\u0445 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430. \u041e\u0434\u043d\u0430\u043a\u043e \u0442\u0438\u043f\u044b \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0442, \u0438\u043d\u043e\u0433\u0434\u0430 \u0434\u0432\u0443\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0434\u043d\u043e \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0440\u043e\u0434\u0438\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0435:<\/p>\n<pre><code class=\"fsharp\">\/\/ \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0431\u043b\u043e\u043a\u0430 `RenderingServer`. type CanvasId with     member this.AttachCanvasItem id = RenderingServer.CanvasItemSetParent((id : CanvasItemId).AsRid, this.AsRid)  \/\/ \u041f\u0430\u0443\u0437\u0430.  \/\/ \u0411\u043b\u043e\u043a \u043f\u0435\u0440\u0435\u043a\u0440\u0451\u0441\u0442\u043d\u044b\u0445 \u0441\u0432\u044f\u0437\u0435\u0439. type CanvasItemId with     member this.SetCanvasParent canvas = (canvas : CanvasId).AttachCanvasItem this <\/code><\/pre>\n<p><strong>\u0415\u0441\u043b\u0438 \u043a\u043e\u0433\u043e-\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442:<\/strong> <code><em>CanvasItem<\/em><\/code><em>-\u044b \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 <\/em><code><em>CanvasItemSetParent<\/em><\/code><em>, \u043d\u043e \u043e\u043d\u0438 \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u0432\u043e <\/em><code><em>Viewport<\/em><\/code><em> \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e.<\/em> <em>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0445 \u043d\u0430\u0434\u043e \u0441\u043b\u043e\u0436\u0438\u0442\u044c \u0432 <\/em><code><em>Canvas<\/em><\/code><em>, \u0430 \u0435\u0433\u043e \u2014 \u0432\u043e <\/em><code><em>Viewport<\/em><\/code><em>.<\/em> <em>\u041c\u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e <\/em><code><em>CanvasItem<\/em><\/code><em> \u043c\u043e\u0436\u043d\u043e \u043a\u043b\u0430\u0441\u0442\u044c \u0432 <\/em><code><em>Canvas<\/em><\/code><em> \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0442\u043e\u0433\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430.<\/em> <em>\u042f \u0438\u0437\u0431\u0430\u0432\u0438\u043b\u0441\u044f \u043e\u0442 \u044d\u0442\u043e\u0439 \u043d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0438, \u043f\u0435\u0440\u0435\u0443\u043f\u0430\u043a\u043e\u0432\u0430\u0432 <\/em><code><em>CanvasItemSetParent<\/em><\/code><em> \u0432 <\/em><code><em>this.SetParent : CanvasItemId -&gt; unit<\/em><\/code><em> \u0438 <\/em><code><em>this.SetCanvasParent : CanvasId -&gt; unit<\/em><\/code><em>.<\/em><\/p>\n<p>\u0412\u0441\u0435\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0443\u043f\u043e\u0440\u043e\u0442\u044c\u0441\u044f \u0438 \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u043e <code>type ... with<\/code> \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 <code>member<\/code>, \u043d\u043e \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435 \u044f \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043a\u043e\u0434\u043e\u0433\u0435\u043d\u0435, \u0438 \u0442\u043e \u0432 \u0432\u044b\u0440\u043e\u0436\u0434\u0435\u043d\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445. \u0412 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0433\u0440\u0443\u043f\u043f \u043d\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u0430\u043c\u0438 \u0441\u043e\u0431\u043e\u0439. \u041f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435 \u044f \u043d\u0435 \u043f\u0440\u0438\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e\u0431\u044b \u0445\u043e\u0442\u044c \u0440\u0430\u0437 \u043e \u043d\u0438\u0445 \u0441\u043f\u043e\u0440\u0438\u043b. \u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044f\u0437\u044b\u043a \u043d\u0435 \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0430\u0441 \u0440\u0430\u0441\u043f\u0438\u043b\u0438\u0432\u0430\u0442\u044c \u0442\u0438\u043f\u044b \u043f\u0440\u043e\u0442\u0438\u0432 \u0432\u0430\u0448\u0435\u0439 \u0432\u043e\u043b\u0438, \u043f\u043e\u043a\u0430 \u0440\u0435\u0447\u044c \u043d\u0435 \u0437\u0430\u0445\u043e\u0434\u0438\u0442 \u043e \u043f\u0435\u0440\u0435\u043a\u0440\u0451\u0441\u0442\u043d\u044b\u0445 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f\u0445.<\/p>\n<h3>\u0414\u0440\u043e\u0431\u043b\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u0430<\/h3>\n<p>\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u043e\u0432 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0432 \u043e\u0442\u0440\u044b\u0432\u0435 \u043e\u0442 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u043e\u0432, \u043d\u043e \u043e\u043d\u0438 \u0432 \u043a\u0430\u043a\u043e\u043c-\u0442\u043e \u0440\u043e\u0434\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0442 \u0438\u0445 \u043d\u0430 \u043c\u0430\u043a\u0440\u043e\u0443\u0440\u043e\u0432\u043d\u0435. \u041c\u043d\u0435 \u0431\u044b \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u0438 \u0444\u0438\u0447\u0438 \u043c\u043e\u0433\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 \u0431\u043e\u043b\u0435\u0435 \u0442\u0435\u0441\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u043a\u0435, \u043d\u043e \u043d\u0435 \u043c\u043e\u0433\u0443 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a \u0438\u043c\u0435\u043d\u043d\u043e. \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0443, \u0447\u0442\u043e \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u043e\u0434\u043e\u0448\u0451\u043b \u0431\u044b \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441\u0438\u043d\u0442\u0435\u0437\u0430 \u0432 \u0432\u0438\u0434\u0435 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430, \u043d\u0430\u043f\u043e\u0434\u043e\u0431\u0438\u0435 \u0442\u0435\u0445, \u0447\u0442\u043e \u0440\u043e\u0436\u0434\u0430\u044e\u0442\u0441\u044f \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0432 \u0445\u043e\u0434\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u044b\u0445 \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0439.<\/p>\n<p>\u0421\u043e\u043c\u043d\u0435\u0432\u0430\u044e\u0441\u044c, \u0447\u0442\u043e \u043c\u043d\u0435 \u0434\u043e\u0432\u0435\u0434\u0451\u0442\u0441\u044f \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u044d\u0442\u0438 \u043d\u043e\u0432\u043e\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0432 F#, \u043d\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u043f\u043e\u0445\u043e\u0436\u0435\u0433\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0430, \u0435\u0441\u043b\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c \u043a\u0440\u0443\u043f\u043d\u044b\u0439 \u0442\u0438\u043f \u0432 \u0432\u0438\u0434\u0435 \u043f\u0430\u0447\u043a\u0438 \u0442\u0438\u043f\u043e\u0432 \u043f\u043e\u043c\u0435\u043d\u044c\u0448\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u0437\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0430\u0434\u0438\u0438 \u00ab\u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f\u00bb. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u0438\u0437\u043e\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0435\u0442\u043a\u0438. \u041e\u043d\u0430 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432:<\/p>\n<ol>\n<li>\n<p>\u0411\u0430\u0437\u0438\u0441, \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0438\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u0445 \u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0430\u0439\u043b\u0430;<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0435\u043a\u0446\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0445\u043e\u043b\u0441\u0442\u043e\u043c \u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c\u0438;<\/p>\n<\/li>\n<li>\n<p>\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441 \u0442\u0430\u0439\u043b\u0430\u043c\u0438;<\/p>\n<\/li>\n<li>\n<p>\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u044b\u043c\u0438 \u043e\u0431\u043b\u0430\u0441\u0442\u044f\u043c\u0438 \u0438\u0437 \u0442\u0430\u0439\u043b\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441 \u0443\u0433\u043b\u0430\u043c\u0438;<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u0441\u0435\u0442\u043a\u0438.<\/p>\n<\/li>\n<\/ol>\n<p>\u0412 \u0441\u0443\u043c\u043c\u0435 \u043e\u043d\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 18 \u0447\u043b\u0435\u043d\u043e\u0432, \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442 (\u043c\u0435\u0442\u043e\u0434\u044b \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0432\u044b\u0442\u043e\u043b\u043a\u043d\u0443\u0442\u044b \u0432 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f). \u041e\u043d\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b, \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u0440\u0438 \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u043d\u043e\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0435 \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043b\u0438\u0431\u043e \u0434\u043b\u0438\u043d\u043d\u044b\u0439 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0435\u0439, \u043b\u0438\u0431\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u0435\u0440\u0435\u043a\u0440\u0451\u0441\u0442\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0432 <code>member<\/code>-\u0430\u0445. \u0415\u0441\u043b\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0431\u043b\u043e\u043a \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430, \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c.<\/p>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043a\u043e\u0434\u0435 \u043d\u0430\u043f\u0440\u043e\u0447\u044c \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 <code>this<\/code>. \u0412\u0435\u0437\u0434\u0435 \u0437\u0430\u0434\u0430\u0447\u0430 \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u043e\u043a, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0438 \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u044b\u0445 <code>member<\/code>-\u043e\u0432:<\/p>\n<pre><code class=\"fsharp\">type CellBasis (cellSize, isoScale) =     let cw = floor (cellSize \/ 2f)     let ch = floor (cw \/ isoScale)      member val Right = Vector2(cw, ch)     member val Left = Vector2(-cw, ch)     member val One = Vector2(0f, 2f * ch)      member _.Size = cellSize     member _.IsoScale = isoScale      member _.Height = ch     member _.Width = cw  type PositionOps (basis : CellBasis) =     member _.CellBasis = basis      member _.ToPixel position =         basis.Right * (position: Vector2).X         + basis.Left * position.Y      member _.OfPixel pixel =         let pixel = (pixel : Vector2) * 0.5f         let w = pixel.X \/ basis.Width         let h = pixel.Y \/ basis.Height         Vector2(w + h, -w + h)  type CellOps (position : PositionOps) =     let basis = position.CellBasis      let (!) cell = position.ToPixel ^ (cell : Vector2I).AsVector()      member _.Position = position      member _.ToPixel cell =         !cell     member _.ToPixelCenter cell =         !cell + 0.5f * basis.One     member _.OfPixel pixel =         let preCell = position.OfPixel(pixel).Floor()         Vector2I(int preCell.X, int preCell.Y)     member _.CornerPixelsClockwise looped cell =         Corners.clockwise looped !cell basis.Right basis.Left  type AreaOps (cellOps : CellOps) =     let (!) = cellOps.ToPixel      member _.CellOps = cellOps      member _.CornerPixelsClockwise looped rect =         Corners.clockwise looped !(rect : Rect2I).Position !rect.Size.X_ !rect.Size._Y  type AngleOps (cellBasis : CellBasis) =     member _.CellBasis = cellBasis      member _.ToLinear isometricAngle =         (cos isometricAngle * cellBasis.Right + sin isometricAngle * cellBasis.Left)             .Angle()     member _.ToIsometric linearAngle =         let x = cos linearAngle \/ cellBasis.Width         let y = sin linearAngle \/ cellBasis.Height         Vector2(x + y, -x + y).Angle()  type GridOps (cellOps : CellOps) =     member this.CellOps = cellOps <\/code><\/pre>\n<p>\u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u0435\u0436\u0434\u0443 \u0431\u043b\u043e\u043a\u0430\u043c\u0438\/\u0442\u0438\u043f\u0430\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0432 \u044f\u0432\u043d\u043e\u043c \u0432\u0438\u0434\u0435, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u0438 \u0442\u043e\u0436\u0434\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u043e\u0432. \u0422\u0430\u043a <code>AngleOps<\/code> \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0431\u0430\u0437\u0438\u0441\u0430 (\u0431\u043b\u043e\u043a 1), \u0431\u043b\u043e\u043a\u0438 \u0441 2 \u043f\u043e 4 \u043e\u043d \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442. \u042d\u0442\u043e\u0442 \u0444\u0430\u043a\u0442 \u0431\u044b\u043b\u043e \u0431\u044b \u0442\u0440\u0443\u0434\u043d\u043e \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u044c \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430, \u0435\u0441\u043b\u0438 \u0431\u044b \u043c\u044b \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u043e\u0434\u043d\u0438\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0442\u0438\u043f\u043e\u043c.<\/p>\n<p>\u042d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u0442\u0430\u0441\u043a\u0430\u0442\u044c \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043d\u043e \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u043f\u0440\u043e\u0449\u0435 \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0438\u0445 \u0432 \u043e\u0434\u043d\u043e\u043c \u043a\u0443\u043b\u0430\u043a\u0435, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0442\u0438\u043f-\u043e\u0431\u0451\u0440\u0442\u043a\u0430:<\/p>\n<pre><code class=\"fsharp\">type Main (cellSize, isoScale) =     let basis = CellBasis(cellSize, isoScale)     let position = PositionOps basis     let cell = CellOps position      member _.Basis = basis     member _.Position = position     member _.Cell = cell      member val Angle = AngleOps basis     member val Area = AreaOps cell     member val Grid = GridOps cell <\/code><\/pre>\n<p><code>IsometricGrid.Main<\/code> \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u0435\u043d, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u044b\u0440\u0430\u0436\u0430\u0435\u0442 \u0432\u0435\u0441\u044c \u0433\u0440\u0430\u0444 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u0441\u0432\u044f\u0437\u0435\u0439 \u0432 \u043e\u0447\u0435\u043d\u044c \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435. \u0415\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u043e \u0441\u0445\u0435\u043c\u044b.<\/p>\n<p>\u041e\u043d \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0434\u043b\u044f DSL, \u0442\u0430\u043a \u043a\u0430\u043a \u0438\u043c\u0435\u043d\u0430 \u0435\u0433\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043a\u0430\u043a \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u044b \u043a \u043c\u0435\u0442\u043e\u0434\u0430\u043c \u0438\u0445 \u0442\u0438\u043f\u043e\u0432. \u0418\u043d\u0442\u0443\u0438\u0442\u0438\u0432\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e <code>mainGrid.Position.OfPixel<\/code> \u2014 \u044d\u0442\u043e <code>Vector2 -&gt; Vector2<\/code>, \u0430 <code>mainGrid.Cell.OfPixel<\/code> \u2014 \u044d\u0442\u043e <code>Vector2 -&gt; Vector2I<\/code>. \u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438, <code>mainGrid.Cell.Fill<\/code> \u0438 <code>mainGrid.Cell.Draw<\/code> \u0433\u043e\u0432\u043e\u0440\u044f\u0442 \u0441\u0430\u043c\u0438 \u0437\u0430 \u0441\u0435\u0431\u044f. \u041b\u0438\u0448\u043d\u0438\u0435 \u0441\u0443\u0444\u0444\u0438\u043a\u0441\u044b \u0438\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u044b.<\/p>\n<p>\u0422\u0438\u043f <code>GridOps<\/code> \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432 \u043c\u043e\u0435\u0439 \u0440\u0435\u0434\u0430\u043a\u0446\u0438\u0438 \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442. \u0412\u0441\u0435 \u0435\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u044b \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a \u0441\u0444\u0435\u0440\u0435 \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u044f:<\/p>\n<pre><code class=\"fsharp\">type GridOps with     member this.DrawClosed antialiased lineWidth color surf (gridSize : Vector2I) =         seq {             let inline (!) x y = this.CellOps.ToPixel ^ Vector2I(x, y)             for i in 0..gridSize.X do                 !i 0, !i gridSize.Y             for i in 0..gridSize.Y do                 !0 i, !gridSize.X i         }         |&gt; Seq.iter ^ fun (a, b) -&gt;             (surf : CanvasItemId).AddLine(a, b, color, lineWidth, antialiased)      member this.DrawOpened antialiased lineWidth color surf (gridSize : Vector2I) =         seq {             let inline (!) x y = this.CellOps.ToPixel ^ Vector2I(x, y)             for i in 1..gridSize.X-1 do                 !i 0, !i gridSize.Y             for i in 1..gridSize.Y-1 do                 !0 i, !gridSize.X i         }         |&gt; Seq.iter ^ fun (a, b) -&gt;             (surf : CanvasItemId).AddLine(a, b, color, lineWidth, antialiased) <\/code><\/pre>\n<p>\u0414\u043b\u044f \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0443\u0436\u0435\u043d <code>CellOps<\/code>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u0438\u043c\u0451\u043d\u043d\u043e\u043c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0435 \u0432 <code>GridOps<\/code>. \u0414\u043b\u044f \u043a\u043e\u0433\u043e-\u0442\u043e \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0430\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u043c\u043e\u0436\u0435\u0442 \u0442\u0440\u0430\u043a\u0442\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430, \u043d\u043e \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u0438 \u0442\u0438\u043f\u044b \u043d\u0435\u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b. \u0418\u0445 \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u0432\u043b\u0435\u0447\u044c \u0438\u0437 <code>Main<\/code>, \u043d\u043e \u043f\u043e \u0444\u0430\u043a\u0442\u0443 \u044d\u0442\u043e \u043b\u0438\u0448\u044c \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044f \u0438\u043b\u0438 \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430, \u0438 \u0431\u0435\u0437 \u043d\u0435\u0433\u043e \u043e\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0438\u0445 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c. \u041a \u0431\u043b\u043e\u043a\u0430\u043c \u043d\u0435 \u043d\u0430\u0434\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442\u044c \u0441 <code>SOLID<\/code> \u0438 \u0442\u043e\u043c\u0443 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c\u0438 \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u044f\u043c\u0438 (\u043d\u043e \u043a\u043e \u0432\u0441\u0435\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u0432 \u0446\u0435\u043b\u043e\u043c \u2014 \u043c\u043e\u0436\u043d\u043e). \u041c\u044b \u0432\u043f\u043e\u043b\u043d\u0435 \u0441\u043e\u0437\u043d\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u044d\u0442\u0430\u043a\u0438\u0439 \u00ab\u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0439 \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u00bb, \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0435\u0433\u043e \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0440\u0435\u043f\u0443\u0442\u0430\u0446\u0438\u044e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u043c \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u044f\u0437\u044b\u043a\u0430 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u044f\u0432\u043b\u0435\u043d\u0438\u044f. \u042d\u0442\u043e \u0448\u0430\u0433 \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0438, \u043d\u043e \u043e\u043d \u0437\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0442\u0443\u043f\u0438\u043a\u043e\u0432\u044b\u0439, \u0442\u0430\u043a \u043a\u0430\u043a \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0442\u044c \u043a\u043b\u0443\u0431\u043e\u043a \u0434\u0430\u043b\u044c\u0448\u0435 \u043c\u044b \u043d\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f. \u041d\u043e \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0435 \u0438 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442, \u0442\u043e \u0440\u0435\u0447\u044c \u0431\u0443\u0434\u0435\u0442 \u0438\u0434\u0442\u0438 \u043e\u0431 \u043e\u0431\u043e\u0441\u043e\u0431\u043b\u0435\u043d\u0438\u0438 \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432, \u0430 \u043d\u0435 \u043e \u0442\u043e\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0430\u0442\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<p>\u0422\u0443\u0442 \u044f \u043e\u043f\u044f\u0442\u044c \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0434\u0440\u043e\u0431\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u0442\u0438\u043f\u044b \u043d\u0435\u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u043d\u043e \u0434\u043b\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u041f\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u0438\u0437-\u0437\u0430 \u043d\u0435\u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u0430, \u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u0432\u0430\u0436\u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0445\u0440\u0443\u043f\u043a\u043e\u0441\u0442\u044c \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430. \u041f\u043e\u043a\u0430 \u0442\u0438\u043f \u043e\u0434\u0438\u043d, \u043c\u0435\u0442\u043e\u0434\u044b \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c. \u041a\u043e\u0433\u0434\u0430 \u0442\u0438\u043f\u043e\u0432 \u043c\u043d\u043e\u0433\u043e, \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0435\u0437\u0434 \u043c\u0435\u0442\u043e\u0434\u0430 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439, \u0447\u0442\u043e \u043f\u0440\u0438 \u043d\u0435\u0443\u0447\u0442\u0451\u043d\u043d\u043e\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u043e\u0431\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f <code>MissingMemberException<\/code>. \u041f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u043c\u0430\u043b\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u043e\u0439 \u0443\u0447\u0451\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u044b\u0445 \u043b\u0438\u0431 \u043d\u0430\u043b\u0430\u0434\u0438\u0442\u044c \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e, \u0442\u0430\u043a \u0447\u0442\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043c\u0435\u043d\u044f \u044d\u0442\u043e\u0442 \u0440\u0438\u0441\u043a \u043d\u0435 \u0432\u043e\u043b\u043d\u0443\u0435\u0442. \u0410 \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0438\u0433\u0440\u044b (\u0438\u043b\u0438 \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f), \u0433\u0434\u0435 \u043a\u043e\u0434 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0440\u0435\u043f\u043a\u043e \u043f\u0440\u0438\u0431\u0438\u0442 \u043a \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0435, \u0447\u0442\u043e \u043e \u0435\u0433\u043e \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0437\u0430\u0438\u043a\u0430\u0442\u044c\u0441\u044f, \u044d\u0442\u043e\u0442 \u0440\u0438\u0441\u043a \u0432\u043e\u0432\u0441\u0435 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442.<\/p>\n<details class=\"spoiler\">\n<summary>GodObject<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/6_\/4b\/wk\/6_4bwk3zvmmhmcoqjub2jwznkp4.jpeg\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/6_\/4b\/wk\/6_4bwk3zvmmhmcoqjub2jwznkp4.jpeg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/6_\/4b\/wk\/6_4bwk3zvmmhmcoqjub2jwznkp4.jpeg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041c\u0435\u0436\u0434\u0443 \u0437\u0430\u043c\u044b\u0441\u043b\u043e\u043c \u0434\u0430\u043d\u043d\u043e\u0439 \u0433\u043b\u0430\u0432\u044b \u0438 \u0435\u0451 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0448\u043b\u043e \u043d\u0435\u043c\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u044f \u0443\u0441\u043f\u0435\u043b \u043c\u043d\u043e\u0433\u043e \u0447\u0435\u0433\u043e \u043f\u043e\u043d\u0430\u0434\u0435\u043b\u0430\u0442\u044c \u0438 \u043f\u0440\u0438\u0439\u0442\u0438 \u043a \u0432\u044b\u0432\u043e\u0434\u0443, \u0447\u0442\u043e \u0434\u0440\u043e\u0431\u043b\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u0430 \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0438\u0433\u0440 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u044f\u0432\u0438\u0442\u044c \u0441\u0435\u0431\u044f \u0435\u0449\u0451 \u0441 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b. \u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043c\u043d\u0435 \u043a\u0440\u0430\u0439\u043d\u0435 \u0432\u0430\u0436\u043d\u043e, \u0441\u043c\u043e\u0433\u0443 \u043b\u0438 \u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0440\u0430\u0441\u0442\u044f\u043d\u0443\u0442\u043e\u0435 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u0442\u044b\u0441\u044f\u0447 \u0441\u0442\u0440\u043e\u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0435\u043a\u043e\u0435\u0433\u043e <code>GodObject<\/code>. \u0414\u0443\u043c\u0430\u044e, \u0447\u0442\u043e \u0432\u0441\u0435\u043c \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438, \u0447\u0442\u043e \u044d\u0442\u043e \u0430\u043d\u0442\u0438\u043f\u0430\u0442\u0442\u0435\u0440\u043d, \u0438 \u043e\u0442 \u043d\u0435\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0431\u0435\u0436\u0430\u0442\u044c \u0441\u043e \u0432\u0441\u0435\u0445 \u043d\u043e\u0433, \u043d\u043e \u043b\u0438\u0447\u043d\u043e \u043c\u043d\u0435 \u0438\u043d\u043e\u0433\u0434\u0430 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u043e\u043f\u044b\u0442\u0430, \u0447\u0442\u043e\u0431\u044b \u0441\u0440\u0430\u0437\u0443 \u043e\u0431\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0431\u0435\u0437 \u043d\u0435\u0433\u043e. \u0421\u0438\u0442\u0443\u0430\u0446\u0438\u044e \u0440\u0435\u0437\u043a\u043e \u043e\u0441\u043b\u043e\u0436\u043d\u044f\u0435\u0442 \u0442\u043e, \u0447\u0442\u043e \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0430 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430 \u0445\u043e\u0434\u0443 \u0438 \u043e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u043e\u043d\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u044d\u043f\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0435\u0440\u0435\u043a\u043b\u0430\u0434\u043a\u0438 \u0440\u0443\u043b\u044f \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u0437\u0430 \u0432\u0435\u0447\u0435\u0440, \u00ab\u0447\u0438\u0441\u0442\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c\u00bb. \u0417\u0430 \u0442\u0435 2-3 \u043d\u0435\u0434\u0435\u043b\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0439 \u043f\u043e\u0434\u043e\u043f\u044b\u0442\u043d\u044b\u0439 \u0442\u0435\u0441\u0442\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d, \u044f \u0443\u0441\u043f\u0435\u044e \u0440\u0430\u0441\u043f\u0438\u0445\u0430\u0442\u044c \u0432\u0441\u0451 \u043f\u043e \u043f\u043e\u043b\u043e\u0447\u043a\u0430\u043c (\u043e\u0431\u044b\u0447\u043d\u043e \u0437\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u0435\u0447\u0435\u0440), \u043d\u043e \u043f\u043e\u043a\u0430 \u043e\u043d \u0437\u0434\u0435\u0441\u044c, \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0443\u0441\u043f\u0435\u0442\u044c \u0437\u0430\u043a\u043e\u0434\u0438\u0442\u044c, \u043f\u043e\u0442\u044b\u043a\u0430\u0442\u044c \u0438 \u043f\u0435\u0440\u0435\u0432\u0430\u0440\u0438\u0442\u044c \u043e\u0437\u0432\u0443\u0447\u0435\u043d\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/c8\/ih\/vq\/c8ihvqqwpih8ay_ij9osjjolxoe.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/c8\/ih\/vq\/c8ihvqqwpih8ay_ij9osjjolxoe.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/c8\/ih\/vq\/c8ihvqqwpih8ay_ij9osjjolxoe.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041f\u0440\u0438 \u0442\u0430\u043a\u043e\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e\u0435 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 <code>GodObject<\/code>-\u0433\u0440\u044b\u0436\u0438 \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0435 \u0442\u0430\u043a \u0443\u0436 \u0438 \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e. \u041a \u043d\u0435\u043c\u0443 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0431\u044b\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u043c. \u041d\u0443\u0436\u0435\u043d \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u0442\u0440\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0431\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0432 \u0443\u0437\u043a\u043e\u043c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435, \u0433\u0434\u0435 \u043e\u043d\u0430 \u0432\u0441\u0451 \u0435\u0449\u0451 \u0434\u0430\u0440\u0443\u0435\u0442 \u043b\u0451\u0433\u043a\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u043e \u0432\u0441\u0435\u043c\u0443, \u043d\u043e \u0435\u0449\u0451 \u043d\u0435 \u0437\u0430\u043a\u0430\u043f\u044b\u0432\u0430\u0435\u0442 \u0432\u0430\u0441 \u043f\u043e\u0434 \u0442\u043e\u043b\u0449\u0435\u0439 \u043f\u0435\u0440\u0435\u043a\u0440\u0451\u0441\u0442\u043d\u044b\u0445 \u0441\u0432\u044f\u0437\u0435\u0439, \u0438 \u0434\u0440\u043e\u0431\u043b\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442.<\/p>\n<\/div>\n<\/details>\n<h3>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 Ready<\/h3>\n<p>\u042f \u043f\u0440\u043e\u043f\u0435\u043b \u0434\u0438\u0444\u0438\u0440\u0430\u043c\u0431\u044b \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u043c\u0443 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0443, \u043d\u043e \u043e\u043d\u0438 \u043a\u0430\u0436\u0443\u0442\u0441\u044f \u043d\u0435\u0443\u043c\u0435\u0441\u0442\u043d\u044b\u043c\u0438 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 Godot, \u0433\u0434\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u043d\u043e\u0434 \u0432\u044b\u043d\u0435\u0441\u0435\u043d\u0430 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434:<\/p>\n<pre><code class=\"fsharp\">type Main () =     inherit Node2D()      let mutable label = None      override this._Ready () =         label &lt;- Some ^ this.getNode \"HUD\/MyLabel\"      override _._Process delta =         label         |&gt; Option.iter ^ fun label -&gt;             (label : Label).Text &lt;- string System.DateTime.Now <\/code><\/pre>\n<p>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0437\u0434\u0435\u0441\u044c \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u044b \u0438 \u0432\u044b\u0441\u0442\u0440\u0435\u043b\u0438\u0432\u0430\u044e\u0442. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u0440\u0430\u0437\u0434\u0440\u043e\u0431\u0438\u043c \u043d\u043e\u0434\u0443 \u043d\u0430 \u0434\u0432\u0430 \u0442\u0438\u043f\u0430, \u043a\u0430\u043a \u0434\u0435\u043b\u0430\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e, \u043d\u043e \u043d\u0435 \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435, \u0430 \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043d\u0435\u0441\u0442\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>_Ready<\/code> \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0442\u0438\u043f, \u0430 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u0438\u043c \u0432\u0441\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 \u043e\u0442 \u043d\u0435\u0433\u043e \u043f\u043e\u043b\u044f:<\/p>\n<pre><code class=\"fsharp\">type Ready (main : Node2D) =     let label : Label = main.getNode \"HUD\/MyLabel\"          member _.Label = label  type Main () =     inherit Node2D()      let mutable ready = None      override this._Ready () =         ready &lt;- Some ^ Ready this      override _._Process delta =         ready         |&gt; Option.iter ^ fun ready -&gt;             ready.Label.Text &lt;- string System.DateTime.Now <\/code><\/pre>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u0440\u043e\u0444\u0438\u0442 \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u0448\u0430\u0433\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0435 \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043a\u0430\u0436\u0434\u043e\u0435 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435 \u043f\u0435\u0440\u0435\u0434 \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c (\u0438\u043b\u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0445 \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c\u0438 <code>defaultof<\/code>). \u042d\u0442\u043e \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e, \u0435\u0441\u043b\u0438 \u0440\u0435\u0447\u044c \u0438\u0434\u0451\u0442 \u043e\u0431 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441 \u0443\u0447\u0430\u0441\u0442\u0438\u0435\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u043e\u043b\u0435\u0439. \u0415\u0441\u043b\u0438 <code>_Ready<\/code> \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u043b, \u0442\u043e \u0432\u0441\u0435 \u043f\u043e\u043b\u044f \u0431\u0443\u0434\u0443\u0442 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0438 \u0441\u043b\u043e\u0436\u0435\u043d\u044b \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u0438 \u043b\u0438\u0448\u044c \u0435\u0433\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430\u0441 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u0435\u0441\u043f\u043e\u043a\u043e\u0438\u0442\u044c.<\/p>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 \u043e\u0442 <code>ready<\/code> \u043c\u0435\u0442\u043e\u0434\u044b \u0432\u043d\u0443\u0442\u0440\u044c \u043e\u0434\u043d\u043e\u0438\u043c\u0451\u043d\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430:<\/p>\n<pre><code class=\"fsharp\">type Ready (main : Node2D) =     let label : Label = main.getNode \"HUD\/MyLabel\"          override _.Process delta =         label.Text &lt;- string System.DateTime.Now  type Main () =     inherit Node2D()      let mutable ready = None      override this._Ready () =         ready &lt;- Some ^ Ready this      override _._Process delta =         ready         |&gt; Option.iter ^ fun ready -&gt; ready.Process delta <\/code><\/pre>\n<p>\u041c\u044b \u0432\u0441\u0451 \u0442\u0430\u043a \u0436\u0435 \u0431\u0443\u0434\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 <code>ready<\/code>, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0443 \u043d\u0435\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u043c\u0435\u0442\u043e\u0434. \u0412\u0441\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0434\u0432\u0438\u0436\u0443\u0445\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0442\u0430\u043c, \u0433\u0434\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0443\u0436\u0435 \u0434\u043e\u0431\u044b\u0442\u044b \u0438 \u043b\u0435\u0436\u0430\u0442 \u0432 \u0433\u043e\u0442\u043e\u0432\u043e\u043c \u0432\u0438\u0434\u0435. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u043e\u043c\u0443 \u043e\u0442\u043f\u0430\u0434\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0432 \u043f\u0440\u043e\u043f\u0435\u0440\u0442\u044f\u0445, \u0430 \u0442\u0438\u043f <code>Main<\/code> \u0432\u044b\u0440\u043e\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0434\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043e\u0431\u0451\u0440\u0442\u043a\u0438.<\/p>\n<p>\u041f\u0440\u0438 \u0442\u0430\u043a\u043e\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0438 \u0441 <code>Main<\/code> \u043f\u043e\u0447\u0442\u0438 \u043f\u0440\u043e\u043f\u0430\u0434\u0430\u0435\u0442. \u041e\u043d\u0430 \u043d\u0443\u0436\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0432\u0438\u0436\u043a\u0443. \u0412 \u043a\u043e\u0434\u0435 \u0436\u0435 \u043d\u0430\u043c \u043f\u0440\u043e\u0449\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0442\u0435\u043c, \u0443 \u043a\u043e\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0435\u0441\u0442\u044c \u0432\u043b\u0430\u0441\u0442\u044c, \u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u044b:<\/p>\n<pre><code class=\"fsharp\">type Main () =     inherit Node2D()      let mutable ready = None          member _.Ready = ready <\/code><\/pre>\n<p>\u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u044d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0442\u0435\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u043a\u043e\u0433\u0434\u0430 \u0441\u0432\u044f\u0437\u044c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u043e\u0439 \u043d\u043e\u0434\u043e\u0439. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0438 \u0442\u0435\u043b\u0430 \u0432 <code>Area2D<\/code>:<\/p>\n<pre><code class=\"fsharp\">match body with \/\/ \u041c\u044b \u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e \u0447\u0435\u043c. | :? Kit.Main as kit -&gt;     \/\/ \u0418 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u044f\u0434\u0440\u0443 \u0442\u0438\u043f\u0430.     kit.Ready     |&gt; Option.iter ^ fun kit -&gt;         match kit.Kind with         | Kit.Medicine value -&gt; health.Heal value         | Kit.Antidote ilness -&gt; effects.Cure illness         kit.Disappear() | _ -&gt;       () <\/code><\/pre>\n<p>\u0412\u043e \u0432\u0441\u0435\u0445 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0442\u043e\u0447\u043d\u043e \u0437\u043d\u0430\u0435\u043c, \u0441 \u0447\u0435\u043c \u0438\u043c\u0435\u0435\u043c \u0434\u0435\u043b\u043e, \u043c\u043e\u0436\u043d\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438 \u043f\u0435\u0440\u0435\u043a\u0438\u0434\u044b\u0432\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u044b <code>Ready<\/code> \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e. \u041d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439, \u0435\u0441\u043b\u0438 \u0432\u0434\u0440\u0443\u0433 \u043a\u043e\u043c\u0443-\u0442\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043d\u043e\u0434\u0435 \u043f\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0443 <code>Ready<\/code>, \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0441\u0432\u044f\u0437\u0430\u0442\u044c \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c \u043d\u0430\u043c\u0435\u0440\u0442\u0432\u043e \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 <code>type .. and<\/code>:<\/p>\n<pre><code class=\"fsharp\">\/\/ \u0422\u043e\u0447\u043d\u0430\u044f \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u044f. type Ready (main : Main) =     let label : Label = main.getNode \"HUD\/MyLabel\"          member this.Process delta =         label.Text &lt;- string System.DateTime.Now      \/\/ \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0430\u043c\u0438 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0435\u0442\u0435.     member _.Main = main  \/\/ \u0422\u0438\u043f\u044b \u0431\u0443\u0434\u0443\u0442 \u0437\u043d\u0430\u0442\u044c \u0434\u0440\u0443\u0433 \u043e \u0434\u0440\u0443\u0433\u0435 and Main () =     inherit Node2D()      let mutable ready = None      member _.Ready = ready      override this._Ready () =         ready &lt;- Some ^ Ready this      override this._Process delta =         ready         |&gt; Option.iter ^ fun ready -&gt; ready.Process delta <\/code><\/pre>\n<p><code>type ... and<\/code> \u2014 \u043f\u043e \u0441\u043c\u044b\u0441\u043b\u0443 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u0435\u043d <code>rec ... and<\/code>, \u043d\u043e \u0434\u043b\u044f \u0442\u0438\u043f\u043e\u0432, \u0430 \u043d\u0435 \u0434\u043b\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u041f\u0440\u0438 \u0442\u0430\u043a\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 <code>Ready<\/code> \u0438 <code>Main<\/code> \u043c\u043e\u0433\u0443\u0442 \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u0434\u0440\u0443\u0433 \u043d\u0430 \u0434\u0440\u0443\u0433\u0430 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f. \u041d\u0443\u0436\u043d\u043e \u0441\u0438\u0435 \u043d\u0435\u0447\u0430\u0441\u0442\u043e, \u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u0434\u0435\u043b\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f, \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442.<\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e <code>main<\/code> \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 <code>Ready<\/code> \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>self<\/code>-\u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u0432 \u043f\u0440\u043e\u0441\u0442\u043e\u043d\u0430\u0440\u043e\u0434\u043d\u043e\u043c \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0438 \u0442\u0435\u0440\u043c\u0438\u043d\u0430. \u042d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u0442\u043e\u0438\u0442 \u043e\u0431\u043c\u043e\u0437\u0433\u043e\u0432\u0430\u0442\u044c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0433\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u0440\u0438\u0439\u0442\u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e <code>as this<\/code> \u2014 \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430. \u041f\u0440\u0430\u0432\u0434\u0430, \u0443 <code>main<\/code> \u0432 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u0441 <code>this<\/code> \u0435\u0441\u0442\u044c \u043e\u0434\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u043d\u043e\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435. \u0418\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043e\u043d \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u0440\u0443\u0433\u0438\u043c \u0442\u0438\u043f\u043e\u043c, \u0432 \u0441\u043a\u043e\u0443\u043f\u0435 <code>Ready<\/code> \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0435\u0433\u043e <code>private<\/code> \u0438\u043b\u0438 <code>protected<\/code> \u0447\u043b\u0435\u043d\u0430\u043c. \u0418\u0445 \u043d\u0430\u0434\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0443\u043a\u0430\u043c\u0438 \u0441\u043a\u043e\u0440\u043c\u0438\u0442\u044c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0443 <code>Ready<\/code> \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 <code>main<\/code>.<\/p>\n<pre><code class=\"fsharp\">override this._Ready () =     ready &lt;- Some ^ Ready(this, privateFun) <\/code><\/pre>\n<p>\u041f\u043e \u043c\u0435\u0440\u0435 \u0443\u0441\u043b\u043e\u0436\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0446\u0435\u043b\u044b\u0439 \u0442\u0438\u043f (<code>type PrivateAccess<\/code>) \u0434\u043b\u044f \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0438 \u0432\u0441\u0435\u0445 \u043d\u0443\u0436\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u043d\u043e \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043a\u0430\u0441\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0438, \u0430 \u043d\u0435 \u0442\u0438\u043f\u043e\u0432 \u0438\u0437 <code>Godot.SDK<\/code>, \u0442\u0430\u043a \u043a\u0430\u043a \u0441\u0443\u0434\u044f \u043c\u043e\u0438\u043c \u0438\u0437\u044b\u0441\u043a\u0430\u043d\u0438\u044f\u043c, \u0434\u0432\u0438\u0436\u043e\u043a \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 <code>protected<\/code>-\u0447\u043b\u0435\u043d\u043e\u0432. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b <code>private<\/code> \u0438 <code>public<\/code>, \u0447\u0442\u043e \u0440\u043e\u0434\u043d\u0438\u0442 Godot \u0441 F#, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c <code>protected<\/code> \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0438\u043d\u0442\u0435\u0440\u043e\u043f\u0430.<\/p>\n<h3>\u041f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0435 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h3>\n<p>\u041c\u044b \u043d\u0430\u0447\u0430\u043b\u0438 \u044d\u0442\u043e\u0442 \u0446\u0438\u043a\u043b \u0441 \u0440\u0430\u0437\u0431\u043e\u0440\u0430 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f\u0432\u043b\u044f\u043b\u0438\u0441\u044c \u0442\u0435\u043b\u043e\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0414\u0430\u043b\u0435\u0435 \u043c\u044b \u0441\u043f\u0440\u043e\u0435\u0446\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0441\u043a\u043e\u0443\u043f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 (<code>output<\/code>). \u041a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044f \u0440\u0430\u0437\u0440\u043e\u0441\u043b\u0430\u0441\u044c, \u043d\u0430\u043c \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0437\u0430\u0432\u0435\u0441\u0442\u0438 \u0434\u043b\u044f \u043d\u0435\u0451 \u0430\u043d\u043e\u043d\u0438\u043c\u043d\u044b\u0439 \u0440\u0435\u043a\u043e\u0440\u0434. \u041a\u043e\u0433\u0434\u0430 \u0442\u043e\u0442 \u043d\u0430\u0447\u0430\u043b\u0438 \u043f\u0435\u0440\u0435\u043a\u0438\u0434\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f, \u043c\u044b \u0437\u0430\u0432\u0435\u0440\u043d\u0443\u043b\u0438 \u0435\u0433\u043e \u0432 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u0438\u043f-\u043e\u0431\u0451\u0440\u0442\u043a\u0443, \u0430 \u0437\u0430\u0442\u0435\u043c \u0438 \u0441\u0440\u0430\u0441\u0442\u0438\u043b\u0438 \u0438\u0445 \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0434\u043e\u0448\u043b\u0438 \u0434\u043e \u0441\u0442\u0430\u0434\u0438\u0438, \u0433\u0434\u0435 \u0442\u0438\u043f \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d \u043a\u0430\u043a \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044f \u0441\u043a\u043e\u0443\u043f\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438-\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430.<\/p>\n<p>\u042d\u0442\u043e \u0443\u0436\u0435 \u043e\u0447\u0435\u043d\u044c \u043d\u0435\u0434\u0443\u0440\u043d\u043e, \u0438 \u043d\u0430 \u044d\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f, \u043d\u043e \u043c\u044b \u043f\u043e\u0448\u043b\u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u0438 \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u0438, \u0447\u0442\u043e \u0442\u0438\u043f \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u0447\u0435\u0440\u0435\u0434\u0430 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0439 \u043d\u0430\u0434 \u043e\u0434\u043d\u0438\u043c \u0438 \u0442\u0435\u043c \u0436\u0435 \u0441\u043a\u043e\u0443\u043f\u043e\u043c. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0432 \u0432\u0438\u0434\u0435 \u0434\u0440\u0435\u0432\u0430 \u0442\u0438\u043f\u043e\u0432, \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u0432\u043e\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438-\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430 \u0438 \u0443\u0437\u043b\u043e\u0432 \u00ab\u043f\u0440\u0435\u0434\u043a\u043e\u0432\u00bb. \u042d\u0442\u043e \u0434\u0440\u0435\u0432\u043e \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u043e\u043c\u043e\u043c\u0435\u043d\u0442\u043d\u043e. \u041e\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0437\u0440\u0430\u0441\u0442\u0430\u0442\u044c\u0441\u044f (\u0430 \u0437\u043d\u0430\u0447\u0438\u0442, \u0438 \u0441\u0445\u043b\u043e\u043f\u044b\u0432\u0430\u0442\u044c\u0441\u044f) \u043f\u043e \u043c\u0435\u0440\u0435 \u0441\u043e\u0437\u0440\u0435\u0432\u0430\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u0439, \u0442\u0430\u043a \u0447\u0442\u043e \u043c\u044b \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u0447\u0435\u0440\u0435\u0437 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0432\u0437\u044f\u0442\u044b\u0435 \u0442\u0438\u043f\u044b. \u041c\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c \u0434\u0432\u0438\u0433\u0430\u0442\u044c\u0441\u044f \u0432 \u044d\u0442\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0434\u0430\u043b\u044c\u0448\u0435, \u043d\u043e \u0441 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u043e\u043c \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430 \u043c\u044b \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438, \u043f\u0440\u0430\u0432\u0434\u0430, \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0446\u0438\u043a\u043b\u0430. \u0426\u0435\u043b\u044b\u0439 \u043f\u043b\u0430\u0441\u0442 \u0440\u0435\u0434\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0444\u0438\u0447 \u0438 \u043f\u0440\u0430\u0432\u0438\u043b \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 <code>base<\/code> (\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043f\u0440\u0435\u0434\u043a\u0430), \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430\u043c\u0438, \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043c\u0438 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435, \u044f \u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438 \u043f\u043e\u0432\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 Godot \u044f \u0438\u0445 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e (\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b), \u0434\u0430 \u0438 \u043a \u0441\u0443\u0442\u0438 \u0434\u0435\u043b\u0430 \u043e\u043d\u0438 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u043d\u0435 \u0438\u043c\u0435\u044e\u0442.<\/p>\n<p>\u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u044f \u043c\u043e\u0433 \u0431\u044b \u043d\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0441\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u0433\u043b\u0430\u0432\u044b \u0438 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0441\u0440\u0430\u0437\u0443 \u043a \u043c\u0430\u043d\u0451\u0432\u0440\u0443 \u0441 <code>Ready<\/code>. \u041e\u043d \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u0430\u043b \u0438 \u043f\u0440\u043e\u0441\u0442, \u0447\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u0441\u043c\u043e\u0433 \u043f\u043e\u043d\u044f\u0442\u044c \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0441 \u0443\u043b\u0438\u0446\u044b, \u043d\u043e \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0441\u0435 \u0438\u0434\u0435\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0441\u044b\u043b\u043a\u0438 \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f \u0434\u043e\u0445\u043e\u0434\u0438\u043b\u0438 \u0431\u044b \u0434\u043e \u043d\u0435\u0433\u043e \u0433\u043e\u0434\u0430\u043c\u0438. \u041d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u043a\u0440\u0430\u0439\u043d\u0435 \u0432\u0430\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b F#-\u0438\u0441\u0442 \u0432\u0438\u0434\u0435\u043b \u0432 \u0442\u0438\u043f\u0435 <strong>\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0438\u0437 \u0442\u043e\u0447\u043a\u0438 \u0410 \u0432 \u0442\u043e\u0447\u043a\u0443 \u0411<\/strong>, \u0430 \u043d\u0435 \u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u043f\u0430\u043c\u044f\u0442\u0438 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0441\u0442\u0430\u0440\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0438\u0445\u0438\u0432\u0430\u0442\u044c \u0441\u043e\u043f\u0440\u043e\u0442\u0438\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e\u0441\u044f \u0434\u0436\u0438\u043d\u0430 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 \u0431\u0443\u0442\u044b\u043b\u043a\u0443 \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u043a\u0430\u0437\u043a\u0435 \u0441 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0434\u0440\u0443\u0433\u0438\u043c \u0434\u0436\u0438\u043d\u043e\u043c. \u0412\u0432\u0438\u0434\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u044f\u0437\u044b\u043a\u0430, \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c\u0441\u044f \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u043f\u0438\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043f\u0438\u0448\u0443\u0442\u0441\u044f \u0432 C#-\u0441\u0442\u0438\u043b\u0435.<\/p>\n<p>\u042d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u043d\u043e\u0432\u043e\u0441\u0442\u044c, \u0435\u0441\u043b\u0438 \u0432\u044b \u0431\u043e\u0438\u0442\u0435\u0441\u044c \u043d\u0435 \u0441\u0434\u044e\u0436\u0438\u0442\u044c, \u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f, \u043d\u043e \u043f\u043e \u0444\u0430\u043a\u0442\u0443 \u044d\u0442\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0432\u044b\u0431\u043e\u0440 \u0442\u0430\u0440\u044b \u0432 \u0443\u0449\u0435\u0440\u0431 \u0435\u0451 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u043c\u0443. \u041c\u043e\u0436\u043d\u043e \u0432\u044b\u0438\u0433\u0440\u0430\u0442\u044c \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u044c\u0448\u0435, \u0435\u0441\u043b\u0438 \u043f\u043e\u0439\u0442\u0438 \u0437\u0430 \u0434\u0436\u0438\u043d\u043e\u043c \u0441 \u0447\u0451\u0442\u043a\u0438\u043c \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435\u043c \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u0438 \u0434\u0430\u0436\u0435 \u0441\u0430\u043c\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0436\u0440\u0443\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u0440\u043e\u0441\u0438\u0442\u044c \u043d\u0430 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0443\u044e \u044d\u043a\u0441\u043f\u0430\u043d\u0441\u0438\u044e. \u0415\u0441\u043b\u0438 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u0437\u0430 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0435\u0439 \u043a \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u043c \u0436\u0430\u043d\u0440\u0430\u043c, \u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043d\u0435 \u0442\u0440\u0430\u0442\u0438\u0442\u044c \u043e\u0447\u043a\u0438 \u043d\u0430 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u0435 \u0437\u0430\u0449\u0438\u0442\u044b\/\u0441\u043e\u043f\u0440\u043e\u0442\u0438\u0432\u043b\u044f\u0435\u043c\u043e\u0441\u0442\u0438, \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u0438\u043a \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0434\u043e \u043d\u0430\u0441 \u0434\u043e\u0442\u044f\u043d\u0443\u0442\u044c\u0441\u044f. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043d\u0430\u043b\u043e\u0432\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u0442\u044c \u0432 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u0433\u0434\u0435 \u043f\u043e \u043d\u0430\u043c \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u0443\u0434\u0430\u0440\u0438\u0442\u044c.<\/p>\n<hr\/>\n<p>\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0433\u043b\u0430\u0432\u0435 \u043c\u044b \u0437\u0430\u0439\u043c\u0451\u043c\u0441\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430, \u0433\u0434\u0435 \u044f \u043f\u043e\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u0431\u0443\u0442\u044b\u043b\u043a\u0438, <code>override<\/code>-\u043e\u0432, C# \u0438 \u043f\u0440\u043e\u0447\u0438\u0445 \u043f\u043e\u043c\u0435\u0445.<\/p>\n<hr\/>\n<p>\u041d\u041b\u041e \u043f\u0440\u0438\u043b\u0435\u0442\u0435\u043b\u043e \u0438 \u043e\u0441\u0442\u0430\u0432\u0438\u043b\u043e \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u043e\u043c\u043e\u043a\u043e\u0434 \u0434\u043b\u044f \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u043d\u0430\u0448\u0435\u0433\u043e \u0431\u043b\u043e\u0433\u0430:<br \/> <a href=\"https:\/\/firstvds.ru\/?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=product&amp;utm_content=vds15exeptprogrev\" rel=\"noopener noreferrer nofollow\">-15% \u043d\u0430 \u0437\u0430\u043a\u0430\u0437 \u043b\u044e\u0431\u043e\u0433\u043e VDS<\/a> (\u043a\u0440\u043e\u043c\u0435 \u0442\u0430\u0440\u0438\u0444\u0430 \u041f\u0440\u043e\u0433\u0440\u0435\u0432) \u2014 <strong>HABRFIRSTVDS<\/strong>.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/939202\/\"> https:\/\/habr.com\/ru\/articles\/939202\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"\"><\/figure>\n<p>\u0412 <a href=\"https:\/\/habr.com\/ru\/companies\/first\/articles\/926138\/\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0433\u043b\u0430\u0432\u0435<\/a> \u043c\u044b \u043d\u0435\u043d\u0430\u0434\u043e\u043b\u0433\u043e \u043f\u0440\u0435\u0440\u0432\u0430\u043b\u0438 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 F#, \u043d\u043e \u0432 \u044d\u0442\u043e\u0439 \u0432\u0441\u0451 \u0441 \u043b\u0438\u0445\u0432\u043e\u0439 \u043d\u0430\u0433\u043e\u043d\u0438\u043c, \u0442\u0430\u043a \u043a\u0430\u043a \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0443 \u043d\u0430\u0441 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440, \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u043e\u0432 (\u0441\u043d\u043e\u0432\u0430) \u0438 \u0438\u0445 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f. \u042f \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0441\u044f \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0438\u0445 \u0432 \u043e\u0434\u043d\u043e\u043c \u0442\u0435\u043a\u0441\u0442\u0435, \u043d\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u043e\u043d\u0438 \u0440\u0430\u0441\u043a\u0438\u0434\u0430\u043d\u044b \u043f\u043e \u0440\u0430\u0437\u043d\u044b\u043c \u0447\u0430\u0441\u0442\u044f\u043c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u0447\u0442\u043e \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e \u043c\u0435\u0448\u0430\u0435\u0442 \u0446\u0435\u043b\u043e\u0441\u0442\u043d\u043e\u043c\u0443 \u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u044e, \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0447\u0435\u0433\u043e \u0434\u0430\u0436\u0435 \u0432\u0435\u0441\u044c\u043c\u0430 \u0431\u0430\u0448\u043a\u043e\u0432\u0438\u0442\u044b\u0435 \u0440\u0435\u0431\u044f\u0442\u0430 \u0442\u0443\u043f\u044f\u0442 \u043a\u0430\u043a \u043c\u0430\u043b\u044c\u0447\u0438\u043a\u0438 \u0441 \u0412\u0438\u043a\u0438\u043f\u0435\u0434\u0438\u0435\u0439 \u043f\u0440\u0438 \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0438 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0434\u0440\u0435\u0432\u043d\u0435\u0433\u043e \u0420\u0438\u043c\u0430. \u0422\u043e \u0435\u0441\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0443 \u043d\u0438\u0445 \u0435\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u043e \u0432\u0441\u0435\u043c \u0437\u043d\u0430\u043d\u0438\u044f\u043c \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u0442\u0432\u0430, \u043d\u043e \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u043d\u0438 \u0441\u043e\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442 \u0441\u043b\u0430\u0431\u0435\u0435, \u0447\u0435\u043c \u0447\u0435\u043b\u043e\u0432\u0435\u043a, \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0432\u0448\u0438\u0439 \u0442\u0440\u0438\u0436\u0434\u044b \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u0433\u043e \u041c\u043e\u043c\u043c\u0437\u0435\u043d\u0430.<\/p>\n<p>\u041d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u044d\u0442\u043e\u0439 \u0433\u043b\u0430\u0432\u044b \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u0442\u043e\u0433\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 Godot \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0418\u0442\u043e\u0433\u043e\u043c \u043e\u0442\u043a\u0430\u0437\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0447\u0442\u0438 \u043f\u043e\u043b\u043d\u043e\u0435 \u0438\u0441\u0447\u0435\u0437\u043d\u043e\u0432\u0435\u043d\u0438\u0435 C# (\u043f\u043e\u043a\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430) \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u0443\u0434\u043e\u0431\u043d\u0443\u044e \u0438 \u0438\u0434\u0438\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443.<\/p>\n<details class=\"spoiler\">\n<summary>\u041e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435<\/summary>\n<div class=\"spoiler__content\">\n<h3>\u041f\u0440\u0438\u043a\u0432\u0435\u043b<\/h3>\n<ul>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/first\/articles\/806145\/\" rel=\"noopener noreferrer nofollow\">An incursion under C#. \u041f\u0440\u043e\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0435\u043c F# \u0432 Godot<\/a> <\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/904306\/\" rel=\"noopener noreferrer nofollow\">\u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>\u0428\u0435\u0441\u0442\u0438\u0434\u0435\u0441\u044f\u0442\u0438\u043b\u0435\u0442\u043d\u0438\u0439 \u0437\u0430\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0439 \u0438 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u0430\u044f \u043a\u0440\u044b\u0441\u0430. F# \u043d\u0430 Godot<\/h3>\n<ul>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/first\/articles\/846224\/\" rel=\"noopener noreferrer nofollow\">\u0427\u0430\u0441\u0442\u044c 1. \u0412\u0441\u0442\u0440\u0435\u0447\u0430 \u0441 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u043c<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/first\/articles\/850980\/\" rel=\"noopener noreferrer nofollow\">\u0427\u0430\u0441\u0442\u044c 2. \u0412\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/first\/articles\/856406\/\" rel=\"noopener noreferrer nofollow\">\u0427\u0430\u0441\u0442\u044c 3. \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b c \u043f\u0435\u0440\u0435\u0441\u0430\u0434\u043a\u0430\u043c\u0438<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/first\/articles\/904772\/\" rel=\"noopener noreferrer nofollow\">\u0427\u0430\u0441\u0442\u044c 4. \u0414\u0435\u0444\u043e\u043b\u0442\u044b, option \u0438 \u0434\u0436\u0435\u043d\u0435\u0440\u0438\u043a\u0438<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/first\/articles\/909536\/\" rel=\"noopener noreferrer nofollow\">\u0427\u0430\u0441\u0442\u044c 5. \u041e\u0448\u0438\u0431\u043a\u0438 \u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/first\/articles\/917404\/\" rel=\"noopener noreferrer nofollow\">\u0427\u0430\u0441\u0442\u044c 6. \u041a\u0430\u043a \u0434\u043e\u0431\u044b\u0442\u044c \u043d\u0435\u0447\u0442\u043e<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/first\/articles\/919448\/\" rel=\"noopener noreferrer nofollow\">\u0427\u0430\u0441\u0442\u044c 7. \u041a\u0430\u043a \u0443\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043d\u0435\u0447\u0442\u043e<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/first\/articles\/926138\/\" rel=\"noopener noreferrer nofollow\">\u0427\u0430\u0441\u0442\u044c 8. \u0417\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0449\u0438\u0439 \u043f\u043e\u0438\u0441\u043a \u043f\u0443\u0442\u0438<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/first\/articles\/939202\/\" rel=\"noopener noreferrer nofollow\">\u0427\u0430\u0441\u0442\u044c 9. \u041f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440, _Ready<\/a> \/\/ \u043c\u044b \u0437\u0434\u0435\u0441\u044c<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/details>\n<h3>\u041e\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u0438\u0437\u0430\u0446\u0438\u044f<\/h3>\n<p>\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0433\u043b\u0430\u0432\u0435 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>createPathFinder<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b\u0430 \u0434\u0440\u0443\u0433\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043e\u0442 <code>goal : Vector2I<\/code>, \u0430 \u0442\u0430 \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b\u0430 <code>Result<\/code> \u0441\u043e \u0437\u0434\u043e\u0440\u043e\u0432\u0435\u043d\u043d\u044b\u043c \u0430\u043d\u043e\u043d\u0438\u043c\u043d\u044b\u043c \u0440\u0435\u043a\u043e\u0440\u0434\u043e\u043c \u0432 <code>Ok<\/code>. \u042d\u0442\u043e\u0442 \u0440\u0435\u043a\u043e\u0440\u0434 \u0431\u044b\u043b \u043a\u0430\u043a \u0410\u043d\u0442\u0438-\u041b\u0430\u0441-\u0412\u0435\u0433\u0430\u0441. \u041e\u043d \u0432\u044b\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u043b \u043d\u0430\u0440\u0443\u0436\u0443 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0451, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u043b\u043e \u0432 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0435, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0441\u043b\u043e\u0432\u0430\u0440\u044f <code>ready<\/code>. \u0418 \u043a\u0430\u043a \u0432\u0441\u0435 \u0443\u0436\u0435 \u043f\u043e\u043d\u044f\u043b\u0438, \u043c\u043d\u0435 \u043f\u043e\u0447\u0442\u0438 \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438\u0441\u043f\u0438\u0447\u0438\u043b\u043e \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u044d\u0442\u0443 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u043d\u0430 \u0438\u0433\u0440\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435.<\/p>\n<p>\u041f\u043e \u0443\u0440\u043e\u0432\u043d\u044e \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438 <code>ready<\/code> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0438\u0431\u043b\u0438\u043d\u0433\u043e\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0438\u0441\u043a\u0430 \u043e\u0442 <code>goal<\/code>, \u0442\u0430\u043a \u0447\u0442\u043e \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0430\u043d\u043e\u043d\u0438\u043c\u043d\u044b\u0439 \u0440\u0435\u043a\u043e\u0440\u0434:<\/p>\n<pre><code class=\"fsharp\">let createPathFinder mapSize isObstacle start =     let addStep = ...     let paths = ...     let ready = ...     let readOnlyPaths = ...     let tryFind goal = ...          {|         Ready = ready.AsReadOnly()         Paths = readOnlyPaths         Start = start         IsObstacle = isObstacle         MapSize = mapSize         TryFind = tryFind     |} <\/code><\/pre>\n<p>\u041d\u043e \u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u043b, \u0442\u0430\u043a \u043a\u0430\u043a <code>createPathFinder<\/code> \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0441\u0438\u043b\u044c\u043d\u043e \u043d\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u043b\u0441\u044f \u043d\u0430 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u0442\u0438\u043f. \u041f\u043e \u0444\u0430\u043a\u0442\u0443, \u044f \u0434\u0430\u0436\u0435 \u043d\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b, \u043f\u043e\u043a\u0430 \u043d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b, \u0447\u0442\u043e \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043b\u043e\u0436\u0438\u0442\u044c \u0442\u0435\u043c\u0443 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u043e\u0432 \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0433\u043b\u0430\u0432\u044b. \u041e\u0434\u043d\u0430\u043a\u043e \u0435\u0449\u0451 \u0440\u0430\u0437 \u043a\u043e\u0432\u044b\u0440\u044f\u0442\u044c\u0441\u044f \u0432 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0435 \u043c\u044b \u043d\u0435 \u0441\u0442\u0430\u043d\u0435\u043c, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u0441\u0438\u043b\u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u044f\u0437\u044b\u043a\u0430 \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 \u0431\u043b\u0438\u0437\u043a\u0430 \u043a \u043d\u0443\u043b\u044e:<\/p>\n<pre><code class=\"fsharp\">\/\/ module PathFinder type Main (mapSize, isObstacle, start) =     let addStep = ...     let paths = ...     let ready = ...     let readOnlyPaths = ...     let tryFind goal = ...          member val Ready = ready.AsReadOnly()          member _.Paths = readOnlyPaths     member _.Start = start     member _.IsObstacle pos = isObstacle pos     member _.MapSize = mapSize          member _.TryFind goal = tryFind goal <\/code><\/pre>\n<p>\u0422\u0438\u043f <code>PathFinder.Main<\/code> \u0432 \u043e\u0431\u0449\u0438\u0445 \u0447\u0435\u0440\u0442\u0430\u0445 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438:<\/p>\n<ul>\n<li>\n<p>\u0423 \u043d\u0430\u0441 \u0442\u0435 \u0436\u0435 \u0441\u0430\u043c\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u2014 <code>mapSize<\/code>, <code>isObstacle<\/code> \u0438 <code>start<\/code>, \u0445\u043e\u0442\u044f \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043e\u043d\u0438 \u0432 \u043a\u043e\u0440\u0442\u0435\u0436\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435.<\/p>\n<\/li>\n<li>\n<p>\u0422\u0435\u043b\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0438\u043b\u043e\u0441\u044c \u043c\u0435\u0436\u0434\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0438 <code>member<\/code>-\u0430\u043c\u0438 (\u0434\u0430\u043b\u044c\u0448\u0435 \u0431\u0443\u0434\u0443 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u00ab\u0437\u043e\u043d\u043e\u0439\/\u0441\u0435\u043a\u0446\u0438\u0435\u0439 <code>let<\/code>\u00bb).<\/p>\n<\/li>\n<li>\n<p>\u0417\u043e\u043d\u0430 <code>member<\/code> \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430. \u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0438\u043d\u0430\u0447\u0435, \u043d\u043e \u0441\u043c\u044b\u0441\u043b\u043e\u0432\u0430\u044f \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u0438\u0441\u0447\u0435\u0437\u0430\u044e\u0449\u0435 \u043c\u0430\u043b\u0430.<\/p>\n<\/li>\n<\/ul>\n<p>\u0421\u043e\u0432\u043e\u043a\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0438 \u0437\u043e\u043d\u044b <code>let<\/code> \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <strong>\u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u043c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u043e\u043c<\/strong>. \u042d\u0442\u043e \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u0444\u0438\u0447\u0430 F# \u043f\u0440\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u00ab\u043e\u0431\u044b\u0447\u043d\u044b\u0445\u00bb \u043a\u043b\u0430\u0441\u0441\u043e\u0432. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0435\u0439, \u043c\u044b \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0438\u0448\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u0441\u043a\u043e\u0443\u043f, \u0438 \u043b\u0438\u0448\u044c \u043a\u043e\u0433\u0434\u0430 \u043e\u043d \u0433\u043e\u0442\u043e\u0432, \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u00ab\u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0442\u044c\u00bb \u0435\u0433\u043e \u0432 <code>member<\/code>-\u044b \u0434\u043b\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044f. \u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u044f\u0437\u044b\u043a\u043e\u0432 (\u0442\u0438\u043f\u0430 C#) \u043c\u044b \u0434\u0432\u0438\u0436\u0435\u043c\u0441\u044f \u0432 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438, \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0434\u0435\u043a\u043b\u0430\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u043e\u043b\u044f \u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0442\u0438\u043f\u0430, \u0438 \u043b\u0438\u0448\u044c \u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u043f\u043e\u0442\u043e\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u0438\u0445 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u041f\u0440\u0438\u0447\u0451\u043c \u0438\u043d\u043e\u0433\u0434\u0430 \u043e\u043d\u0430 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0431\u043e\u043a\u0443, \u0447\u0442\u043e \u0432\u044b\u0432\u0430\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u0442\u0438\u043f\u0430. \u041f\u0440\u0438 \u0431\u043e\u043b\u044c\u0448\u043e\u043c \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u043d\u0430 F# \u043c\u043e\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u0432 C#-\u043d\u043e\u0439 \u043c\u0430\u043d\u0435\u0440\u0435, \u043d\u043e \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043a\u043e\u043d\u0442\u0440\u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0438\u0432\u043d\u043e, \u0435\u0441\u043b\u0438 \u0440\u0435\u0447\u044c \u043d\u0435 \u043e \u0445\u0430\u0440\u0434\u043a\u043e\u0440\u043d\u043e\u043c \u0438\u043d\u0442\u0435\u0440\u043e\u043f\u0435 \u0441 \u0436\u0435\u043b\u0435\u0437\u043e\u043c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0431\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043b \u043d\u043e\u0432\u0438\u0447\u043a\u0430\u043c \u0432\u0441\u044f\u0447\u0435\u0441\u043a\u0438 \u0438\u0437\u0431\u0435\u0433\u0430\u0442\u044c \u044d\u0442\u043e\u0433\u043e, \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043a\u0430\u0436\u0443\u0449\u0443\u044e\u0441\u044f \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e\u0441\u0442\u044c. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0435\u0431\u0435 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441 \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b, \u0447\u0442\u043e \u043f\u043e\u043c\u043e\u0447\u044c \u0432\u0430\u043c (\u0431\u0435\u0437 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e\u0433\u043e \u043f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u044f) \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043a\u043e\u043c\u0443.<\/p>\n<p>\u0412\u0441\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430 \u0438 \u0435\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0442 \u043e\u0431\u0449\u0438\u0439 \u0441\u043a\u043e\u0443\u043f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432\u043e \u0432\u0441\u0435\u0445 <code>member<\/code>-\u0430\u0445 \u0442\u0438\u043f\u0430. \u0414\u043b\u044f \u043f\u043e\u0434\u0447\u0451\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u043a\u0442\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043f\u0440\u0438\u043d\u0443\u0436\u0434\u0430\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u0441\u0435\u043a\u0446\u0438\u044e <code>let<\/code> \u0441\u0442\u0440\u043e\u0433\u043e \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0442\u0438\u043f\u0430 \u0434\u043e \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f <code>member<\/code>-\u043e\u0432. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 (\u0438\u043b\u0438 \u0442\u043e\u0447\u043d\u0435\u0435 \u00ab\u043b\u0438\u0447\u043d\u044b\u0439\u00bb) \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e (<code>static let<\/code>), \u043d\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440, \u0430 \u043d\u0435 \u0432\u0435\u0441\u044c \u0442\u0438\u043f. \u041b\u043e\u0433\u0438\u0447\u043d\u043e, \u0447\u0442\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0432\u0438\u0434\u043d\u044b \u0432 \u0437\u043e\u043d\u0435 \u00ab\u043b\u0438\u0447\u043d\u043e\u0433\u043e\u00bb \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u043e\u043d\u0430 <code>static let<\/code> (\u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u0435\u0441\u0442\u044c) \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0437\u043e\u043d\u0435 <code>let<\/code>. \u0421\u043a\u043e\u0443\u043f \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0432\u0430\u0442\u0435\u043d \u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0447\u0435\u0440\u0435\u0437 <code>this._<\/code>-\u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442, \u0438 <strong>\u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430<\/strong>. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0435\u0441\u043b\u0438 \u0432 <code>Equals<\/code> \u043d\u0430\u0434\u043e \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0441\u0432\u043e\u0439 <code>myValue<\/code> \u0441 \u0447\u0443\u0436\u0438\u043c, \u0442\u043e \u0435\u0433\u043e \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 <code>member private this.MyValue = myValue<\/code>.<\/p>\n<p>\u041f\u043e\u0440\u044f\u0434\u043e\u043a \u043f\u0440\u0438\u0432\u044f\u0437\u043e\u043a \u0432\u0430\u0436\u0435\u043d. \u041e\u043d\u0438 \u043f\u043e\u0434\u0447\u0438\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u043b\u044c\u0437\u044f \u0441\u043e\u0441\u043b\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0430 \u043f\u043e\u0437\u0436\u0435. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0430 \u043d\u0438\u0437\u043e\u0432\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u0440\u0438\u0432\u044f\u0437\u043e\u043a \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u043f\u043e\u043b\u044f \u0438 \u043c\u0435\u0442\u043e\u0434\u044b \u0442\u0438\u043f\u0430, \u0442\u0430\u043a \u0447\u0442\u043e \u0440\u0435\u0447\u044c \u0438\u0434\u0451\u0442 \u043d\u0435 \u043e \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f\u0445, \u0430 \u043e \u0440\u0430\u0437\u0434\u0432\u0438\u0433\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0448\u043e\u0440\u0430\u0445. \u041f\u043e\u043b\u0435 \u00ab\u0432\u0441\u0435\u0433\u0434\u0430\u00bb \u0435\u0441\u0442\u044c, \u043d\u043e \u043c\u044b \u0435\u0433\u043e \u043d\u0435 \u0443\u0432\u0438\u0434\u0438\u043c, \u043f\u043e\u043a\u0430 \u043e\u043d\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0433\u043e\u0442\u043e\u0432\u043e \u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e. \u042d\u0442\u043e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0435 \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441 <code>mutable<\/code> \u0438\u043b\u0438 <code>Unchecked.defaultof<\/code>. \u041e\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u0434\u0435\u0440\u0436\u0438\u0442 \u0442\u0438\u043f \u0432 \u0442\u043e\u043d\u0443\u0441\u0435, \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e \u0432\u044b\u0440\u0435\u0437\u0430\u044f \u0432\u044b\u0431\u044b\u0432\u0448\u0438\u0435 \u043f\u043e\u043b\u044f. \u0412\u0441\u0451 \u0447\u0442\u043e \u043d\u0435 \u0431\u044b\u043b\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043e, \u0442\u043e \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u0438 \u0432\u0441\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 <code>member<\/code>-\u044b (\u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0435\u0441\u0442\u044c) \u0432\u0437\u0432\u043e\u044e\u0442 \u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438.<\/p>\n<p>\u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043a\u0438\u043d\u0443\u0442\u044c \u0438\u0437 \u0442\u0438\u043f\u0430 \u043e\u0442\u0441\u043b\u0443\u0436\u0438\u0432\u0448\u0438\u0435 \u0441\u0432\u043e\u0451 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0441\u043a\u043e\u0443\u043f\u0430. \u041e\u043d\u0438 \u043e\u0441\u0442\u0430\u043d\u0443\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0443\u0442\u0438\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043f\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c. \u041e\u0434\u043d\u0430\u043a\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u043c\u0451\u043d, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0442\u044c \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438, \u043d\u0435\u0432\u043e\u0441\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043f\u043e\u0434 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>let mutable<\/code> \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u043f\u043e\u043b\u044f, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0441 \u043d\u0438\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f. \u0428\u0430\u0434\u043e\u0432\u0438\u043d\u0433 \u043d\u0435 \u043f\u043e\u043c\u043e\u0436\u0435\u0442. \u041c\u043d\u0435 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043b\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u0435\u0434\u0443\u0433\u0430\u0434\u0430\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430, \u043d\u043e \u0442\u0438\u043f\u043e\u0432\u044b\u0435 \u0441\u043b\u0443\u0447\u0430\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043a\u043e\u0432\u044b\u0440\u044f\u0442\u044c \u0432 <a href=\"https:\/\/sharplab.io\" rel=\"noopener noreferrer nofollow\">SharpLab<\/a>. \u0412 \u0446\u0435\u043b\u043e\u043c \u044f \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u044e \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0437\u0430\u0441\u043e\u0440\u044f\u0442\u044c \u0441\u043a\u043e\u0443\u043f, \u0431\u043b\u0430\u0433\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0443\u0439\u043c\u0430.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043d\u0435\u0434\u043e\u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442 \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e <code>use<\/code> \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430. \u0417\u0430 \u0432\u0441\u0435 \u0433\u043e\u0434\u044b \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u044f \u0442\u0430\u043a \u0438 \u043d\u0435 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u043b\u0441\u044f \u0441 \u0434\u043e\u043c\u0435\u043d\u043e\u043c, \u0433\u0434\u0435 \u0431\u044b \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u043a \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0435\u0445\u0430\u0442\u044c \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u00ab\u043d\u0435\u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439\u00bb \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 (\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0443, \u0448\u0442\u0443\u043a\u0430 \u0440\u0435\u0434\u043a\u0430\u044f), \u043d\u043e \u043f\u043e \u043c\u0435\u0440\u0435 \u043f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0432 GPU-\u0434\u0435\u0431\u0440\u0438 \u044f \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u044e, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u0441\u0442\u0430\u043d\u0435\u0442. \u041f\u043e\u043a\u0430 \u0436\u0435 \u043c\u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0441\u043a\u043e\u0443\u043f\u043e\u0432 \u0438\u043b\u0438 \u0432 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0440\u0443\u0447\u043d\u043e\u0433\u043e <code>Dispose<\/code>:<\/p>\n<pre><code class=\"fsharp\">type MyType (path) =     let content =         use reader = System.IO.File.OpenRead path         ... <\/code><\/pre>\n<h4>Just do it<\/h4>\n<p>\u041f\u0440\u0430\u0437\u0434\u043d\u043e \u0448\u0430\u0442\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u043c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435 \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u044b. \u0412\u0441\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438, \u043b\u0438\u0431\u043e \u044f\u0432\u043d\u043e \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0447\u0435\u0440\u0435\u0437 <code>do<\/code>. \u042d\u0442\u043e \u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439, \u043a\u043e\u0433\u0434\u0430 <code>do<\/code>-\u043d\u043e\u0442\u0430\u0446\u0438\u044f \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430. \u041f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b\u043b\u043e \u0442\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u043d\u043e, \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0442\u043e\u0447\u043d\u043e \u043d\u0435 \u043c\u043e\u0433\u0443, \u043d\u043e \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0434\u0435\u043b\u043e \u0432 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0435 \u043c\u0435\u0436\u0434\u0443 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c (<code>static do<\/code>) \u0438 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u043c (<code>do<\/code>) \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430\u043c\u0438. \u0413\u0440\u0430\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u044f\u0432\u043e\u0447\u043d\u044b\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u043c. \u0415\u0441\u043b\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043d\u0430\u0447\u043d\u0451\u0442 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u044c \u043d\u0435\u044f\u0432\u043d\u044b\u0439 <code>do<\/code> \u043a \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0438\u0437 \u0441\u0442\u043e\u0440\u043e\u043d, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043b\u0430\u0431\u044b\u0439, \u043d\u043e \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u0438\u0442\u043e\u043a \u0431\u0430\u0433\u043e\u0432 \u0437\u0430 \u0441\u0447\u0451\u0442 <code>unit<\/code> \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u043e\u0432 (\u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u043d\u0430 \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f\u0445). \u0421\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0441\u044f \u043b\u0438\u0448\u044c \u0441 \u0432\u0432\u043e\u0434\u043e\u043c \u043a\u0430\u043a\u043e\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c <code>static end<\/code>, \u0447\u0442\u043e \u0432 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0439 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0435 \u043e\u0447\u0435\u043d\u044c \u0441\u043e\u043c\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e.<\/p>\n<p>\u041e\u0431\u0440\u0430\u0449\u0430\u044e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u00ab\u043e\u0434\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 (\u0442\u043e\u0447\u043d\u0435\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435) \u2014 \u043e\u0434\u0438\u043d <code>do<\/code>\u00bb \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0432\u0437\u044f\u0442\u044b\u0445 \u043a\u043e\u043b\u043b\u0435\u043a\u0442\u0438\u0432\u043e\u0432. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0437\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c\u043e\u0439 \u0432 \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0443 \u043b\u043e\u0433\u0438\u043a\u0438 \u044f \u043f\u0438\u0448\u0443 \u0438 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"fsharp\">do a () do b 42 do c () <\/code><\/pre>\n<p>\u0418 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"fsharp\">do  \/\/ \u041f\u0443\u0441\u0442\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430.     let value = 42 \/\/ \u041e\u0442\u0441\u0442\u0443\u043f \u0432 4.     a ()     b value     c () <\/code><\/pre>\n<p>\u041f\u0435\u0440\u0432\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u043d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u043d\u0438\u043a\u0430\u043a\u0438\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0438\u0445 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u043d\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u043a <code>do<\/code>, \u0430 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u0434\u0443\u0442 \u0441 \u043e\u0442\u0441\u0442\u0443\u043f\u043e\u043c \u0432 4 \u0437\u043d\u0430\u043a\u0430, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0432\u044b\u0434\u0435\u043b\u044f\u0442\u044c\u0441\u044f \u043d\u0430 \u0444\u043e\u043d\u0435 <code>let<\/code>. \u0412\u0441\u0451 \u044d\u0442\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u043d\u043e\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a \u043c\u0435\u0436\u0434\u0443 \u0431\u043b\u043e\u043a\u0430\u043c\u0438 <code>do<\/code> \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 <code>Alt + Up\/Down<\/code> (\u0432 VS). \u041d\u0443\u0436\u043d\u043e \u044d\u0442\u043e \u043d\u0435\u0447\u0430\u0441\u0442\u043e, \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0434\u043b\u044f \u0441\u0446\u0435\u043d \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c <code>unit<\/code>-\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439.<\/p>\n<h3>\u0413\u0440\u0430\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 member \u0438 let<\/h3>\n<p>\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e <code>member<\/code>-\u044b \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430. \u0412 \u0441\u043a\u043e\u0443\u043f\u0435 \u0438\u0445 \u043d\u0435\u0442, \u0438 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043d\u0438\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f <code>self<\/code>-\u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 (\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0435\u0431\u044f), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u0431\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e <code>type Main (...) as this =<\/code>. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0434\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430 <code>member<\/code>-\u044b \u0442\u0438\u043f\u0430 (\u043d\u0435 \u043f\u0440\u0435\u0434\u043a\u043e\u0432) \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044e (\u0441\u043c. \u0433\u043b\u0430\u0432\u0443 7).<\/p>\n<p>\u041f\u0440\u0438 \u0442\u0430\u043a\u0438\u0445 \u0432\u0432\u043e\u0434\u043d\u044b\u0445 \u043d\u0438\u0448\u0430 \u0430\u0432\u0442\u043e\u0441\u0432\u043e\u0439\u0441\u0442\u0432 (<code>member val<\/code>) \u0440\u0430\u0434\u0438\u043a\u0430\u043b\u044c\u043d\u043e \u0441\u0443\u0436\u0430\u0435\u0442\u0441\u044f. \u0422\u0430\u043c \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e, \u0447\u0442\u043e \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u043c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435. \u0421 \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438 \u0438 \u043e\u0431\u044b\u0447\u043d\u044b\u043c\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0449\u0435. \u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u0432\u043e\u0451\u043c \u043e\u043d\u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0443\u0436\u0435 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u0438\u0442\u043e\u0433\u043e\u0432\u043e\u043c <code>member<\/code>. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e <code>let tryFind<\/code> \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043c\u0435\u043d\u0451\u043d \u043d\u0430:<\/p>\n<pre><code class=\"fsharp\">member this.TryFind goal =     if not ^ inMap mapSize goal then Result.Error OutOfBounds     elif isObstacle goal then Result.Error Obstacle else     match ready.TryFind goal with     ... <\/code><\/pre>\n<p><code>let readOnlyPaths<\/code> \u0431\u0443\u0434\u0443\u0447\u0438 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0451\u043d \u0432 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e <code>Paths<\/code>, \u0430 <code>TryFind<\/code>, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u0435\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a <code>this<\/code>, \u0441\u043c\u043e\u0436\u0435\u0442 \u0435\u0433\u043e \u043e\u0442\u0442\u0443\u0434\u0430 \u0437\u0430\u0431\u0440\u0430\u0442\u044c:<\/p>\n<pre><code class=\"fsharp\">member val Paths = paths.AsReadOnly() <\/code><\/pre>\n<p>\u0421\u043a\u043e\u043b\u044c\u043a\u043e \u043b\u043e\u0433\u0438\u043a\u0438 \u043d\u0430\u0434\u043e \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 <code>let<\/code>, \u0430 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432 <code>member<\/code> \u2014 \u0432\u043e\u043f\u0440\u043e\u0441 \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u043e\u043d\u043d\u044b\u0439. \u0418\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u043b\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044f \u0431\u0443\u0434\u0435\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439. \u041d\u043e \u0443 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0432 \u0435\u0441\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 KPI \u043d\u0430 \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e \u0447\u0438\u0441\u043b\u0430 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0446\u0438\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d\u0438 \u0437\u0430\u043c\u0435\u0449\u0430\u044e\u0442 <code>member<\/code>-\u0430\u043c\u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u043f\u0440\u0438\u0432\u044f\u0437\u043e\u043a. \u042f \u043d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u043d\u043e\u0448\u0443\u0441\u044c \u043a \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0434\u0445\u043e\u0434\u0443 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a \u0441\u0432\u0435\u0436\u0435\u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c \u0442\u0438\u043f\u0430\u043c, \u043d\u043e \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e \u043f\u0435\u0440\u0435\u0433\u043e\u043d\u043a\u0435 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 <code>let<\/code>. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u044d\u0442\u043e \u043b\u0438\u0448\u043d\u044f\u044f \u0434\u0432\u0438\u0436\u0443\u0445\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435 \u043f\u043b\u043e\u0445\u043e \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u0433\u0438\u0442\u0430, \u0430 \u0432<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-471443","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/471443","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=471443"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/471443\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=471443"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=471443"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=471443"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}