{"id":7478,"date":"2015-07-03T22:57:25","date_gmt":"2015-07-04T03:57:25","guid":{"rendered":"httpss:\/\/www.powenko.com\/wordpress\/?p=7478"},"modified":"2015-07-03T23:02:15","modified_gmt":"2015-07-04T04:02:15","slug":"lua-private","status":"publish","type":"post","link":"https:\/\/www.powenko.com\/wordpress\/?p=7478","title":{"rendered":"LUA Private function \u548c Private \u8b8a\u6578"},"content":{"rendered":"<p>LUA \u7684private \u8b8a\u6578\u4f5c\u6cd5\u5982\u4e0b<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\nlocal function MyClass(init)\r\n  -- the new instance\r\n  local self = {\r\n    -- public fields go in the instance table\r\n    public_field = 0\r\n  }\r\n\r\n  -- private fields are implemented using locals\r\n  -- they are faster than table access, and are truly private, so the code that uses your class can't get them\r\n  local private_field = init\r\n\r\n  function self.foo()\r\n    return self.public_field + private_field\r\n  end\r\n\r\n  function self.bar()\r\n    private_field = private_field + 1\r\n  end\r\n\r\n  -- return the instance\r\n  return self\r\nend\r\n\r\nlocal i = MyClass(5)\r\nprint(i.foo()) --&gt; 5\r\ni.public_field = 3\r\ni.bar()\r\nprint(i.foo()) --&gt; 9\r\n<\/pre>\n<p>\u800cprivate function \u7684\u4f5c\u6cd5\u5982\u4e0b\uff0c\u56b4\u683c\u4f86\u8ddfC\u8a9e\u8a00\u7684OOP\u7684\u79c1\u6709\u51fd\u6578\u9084\u662f\u4e0d\u592a\u4e00\u6a23\u7684\u89c0\u5ff5\uff0c<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\nlocal function MyClass(init)\r\n    -- the new instance\r\n    local self = {\r\n        -- public fields go in the instance table\r\n        public_field = 0\r\n    }\r\n\r\n    -- private fields are implemented using locals\r\n    -- they are faster than table access, and are truly private, so the code that uses your class can't get them\r\n    local private_field = init\r\n\r\n    function self.foo()\r\n        return self.public_field + private_field\r\n    end\r\n    local function privatefunction2()\r\n        private_field = private_field + 10\r\n    end\r\n    function self.bar()\r\n        private_field = private_field + 1\r\n        local function privatefunction()\r\n           private_field = private_field + 10\r\n        end\r\n        privatefunction()\r\n        privatefunction2()\r\n    end\r\n    \r\n\r\n    -- return the instance\r\n    return self\r\nend\r\n\r\n    local i = MyClass(5)\r\n    print(i.foo()) --&gt; 5\r\n    i.public_field = 3\r\n    i.bar()\r\n    print(i.foo()) --&gt; 29\r\n   -- print(i.privatefunction2()) --&gt; \u56e0\u70ba\u662f\u79c1\u6709\u51fd\u6578\uff0c\u6240\u4ee5\u7121\u6cd5\u88ab\u547c\u53eb\r\n    \r\n<\/pre>\n<p><a href=\"httpss:\/\/www.powenko.com\/wordpress\/wp-content\/uploads\/2015\/07\/Screen-Shot-2015-07-04-at-11.55.27-AM.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"httpss:\/\/www.powenko.com\/wordpress\/wp-content\/uploads\/2015\/07\/Screen-Shot-2015-07-04-at-11.55.27-AM.jpg\" alt=\"Screen Shot 2015-07-04 at 11.55.27 AM\" width=\"309\" height=\"96\" class=\"alignnone size-full wp-image-7479\" srcset=\"https:\/\/www.powenko.com\/wordpress\/wp-content\/uploads\/2015\/07\/Screen-Shot-2015-07-04-at-11.55.27-AM.jpg 309w, https:\/\/www.powenko.com\/wordpress\/wp-content\/uploads\/2015\/07\/Screen-Shot-2015-07-04-at-11.55.27-AM-300x93.jpg 300w, https:\/\/www.powenko.com\/wordpress\/wp-content\/uploads\/2015\/07\/Screen-Shot-2015-07-04-at-11.55.27-AM-120x37.jpg 120w, https:\/\/www.powenko.com\/wordpress\/wp-content\/uploads\/2015\/07\/Screen-Shot-2015-07-04-at-11.55.27-AM-210x65.jpg 210w, https:\/\/www.powenko.com\/wordpress\/wp-content\/uploads\/2015\/07\/Screen-Shot-2015-07-04-at-11.55.27-AM-140x43.jpg 140w\" sizes=\"(max-width: 309px) 100vw, 309px\" \/><\/a><\/p>\n<p>\u67ef\u8001\u5e2b\u7684\u7bc4\u4f8b\u7a0b\u5f0f\u53ef\u4ee5\u5728\u6b64<a href=\"httpss:\/\/www.powenko.com\/download_temp\/Tutorial_LUA_OOP_Private.zip\">\u4e0b\u8f09<\/a><\/p>\n<p>\u53c3\u8003\u8cc7\u6599<a href=\"httpss:\/\/lua-users.org\/wiki\/ObjectOrientationTutorial\">\u5728\u6b64<\/a><\/p>\n<p>\u66f4\u591a\u5b8c\u6574\u7684LUA \u00a0OOP\u00a0\u53c3\u8003\u8cc7\u6599<a href=\"httpss:\/\/lua-users.org\/wiki\/ObjectOrientedProgramming\">\u5728\u6b64<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>LUA \u7684private \u8b8a\u6578\u4f5c\u6cd5\u5982\u4e0b local function MyClass(init) &#8212; the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":7479,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[272],"tags":[],"class_list":["post-7478","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ch02-lua"],"_links":{"self":[{"href":"https:\/\/www.powenko.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/7478"}],"collection":[{"href":"https:\/\/www.powenko.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.powenko.com\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.powenko.com\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.powenko.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7478"}],"version-history":[{"count":4,"href":"https:\/\/www.powenko.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/7478\/revisions"}],"predecessor-version":[{"id":7483,"href":"https:\/\/www.powenko.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/7478\/revisions\/7483"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.powenko.com\/wordpress\/index.php?rest_route=\/wp\/v2\/media\/7479"}],"wp:attachment":[{"href":"https:\/\/www.powenko.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7478"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.powenko.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7478"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.powenko.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7478"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}