lua元表實現面向對象 Lua語言怎么把代碼弄成這個樣子的?
Lua語言怎么把代碼弄成這個樣子的?互聯網上的許多l(xiāng)ua示例,包括所謂的OOP實現示例,都是偽裝成lua的C/C#/Java/OC代碼。這是一個非常積極的事情,業(yè)主可以關心真正的盧阿寫作。面向對象的核
Lua語言怎么把代碼弄成這個樣子的?
互聯網上的許多l(xiāng)ua示例,包括所謂的OOP實現示例,都是偽裝成lua的C/C#/Java/OC代碼。這是一個非常積極的事情,業(yè)主可以關心真正的盧阿寫作。面向對象的核心是什么?封裝、繼承和多態(tài)性。Lua的表可以封裝??梢哉f表是一個對象。繼承的本質是代碼重用。Lua的解決方案是使用metatable。當需要繼承時,可以直接設置metatable。如果你采用一個更激進的概念,繼承可以被放棄。多次調用函數是件大事。至于多態(tài)性,duck類型的語言天生就是多態(tài)的。因此,您不需要聲明類,也不需要學習這些示例,編寫一個類函數,編寫一個新函數(以及extend、private、public、ctor……),然后認真地去new并做一些事情—只需使用Lua的本機機制。
在lua,javascript大行其道的今天,面向對象模型的價值在哪里呢?
腳本語言不一定支持面向對象的思考和編寫。例如,雖然JS是一種腳本語言,但面向對象的編寫方法(如class和extensions)已經添加到ES6中,您看到的JS可能是用強類型的面向對象編程語言typescript編譯的。面對對象的價值,它可以更好地實現代碼的模塊化、開發(fā)人員的清晰劃分、降低開發(fā)難度、易于維護
首先,讓我們從編程語言的角度來看待兩者的區(qū)別。
最典型的面向過程編程語言是C語言,面向對象語言包括C、Java、C#。
在C語言中,基本數據類型是變量、數組、結構和函數。在使用這些數據類型進行編程時,主要考慮的是如何將要處理的數據放入適當的數據類型中,并根據事件的順序調用函數來完成業(yè)務邏輯的處理。
在面向對象語言中,最重要的概念是類,類實例化的結果是對象。在設計過程中,這種語言涉及到很多現實生活中的處理模型。例如,汽車是一個非常抽象的對象,但奔馳和寶馬是非常具體的。這些車可以分為高配置和低配置,并且可以駕駛。
這些汽車模型對應于基類、派生類、屬性和方法的概念。因此,在使用面向對象編程時,數據的合理封裝是其主要的核心工作。
綜上所述,面向過程編程的核心技術是數據結構和算法;面向對象編程的核心技術是23種設計模式。我們必須熟練地掌握它!