惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
GRAHAM CLULEY
T
Tenable Blog
Know Your Adversary
Know Your Adversary
C
CXSECURITY Database RSS Feed - CXSecurity.com
P
Privacy International News Feed
S
Security Affairs
NISL@THU
NISL@THU
O
OpenAI News
Attack and Defense Labs
Attack and Defense Labs
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Hacker News: Ask HN
Hacker News: Ask HN
Webroot Blog
Webroot Blog
Schneier on Security
Schneier on Security
S
SegmentFault 最新的问题
S
Schneier on Security
G
Google Developers Blog
V
V2EX
C
Check Point Blog
U
Unit 42
Google DeepMind News
Google DeepMind News
T
Threatpost
阮一峰的网络日志
阮一峰的网络日志
T
The Exploit Database - CXSecurity.com
Recent Announcements
Recent Announcements
M
MIT News - Artificial intelligence
S
Secure Thoughts
博客园 - 司徒正美
Recorded Future
Recorded Future
P
Proofpoint News Feed
Spread Privacy
Spread Privacy
K
Kaspersky official blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
AI
AI
博客园 - 聂微东
N
News and Events Feed by Topic
SecWiki News
SecWiki News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
Vulnerabilities – Threatpost
P
Palo Alto Networks Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Engineering at Meta
Engineering at Meta
Recent Commits to openclaw:main
Recent Commits to openclaw:main
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
酷 壳 – CoolShell
酷 壳 – CoolShell
WordPress大学
WordPress大学
The Hacker News
The Hacker News
The Last Watchdog
The Last Watchdog
Project Zero
Project Zero
W
WeLiveSecurity
博客园 - Franky

博客园 - yinsua

OpenBCI调试记录 Qt QML/Quick程序部署 一种CAN接口电路的隔离方案 【转载】0-5V转4-20mA电路以及Howland电流源分析与仿真 【转载】外置USB供电与内置锂电池供电自动切换电路 模块的电气隔离的例子(音频采集电路) 【转载】EMC 共模电感选型 RS485的电路防护设计 ubuntu 20.04 安装VMware Tools Linux常用操作 MOS管随笔 RTX V4随笔 【转载】Keil MDK的sct分散加载文件详解 Git 加入gitignore文件后应用 git报错error: could not lock config file RT-Thread速览——内核 ARM MDK开发中的\$Super\$\$main与\$Sub\$\$main - yinsua - 博客园 cpolar(内网穿透工具)安装 VSCode + EIDE开发记录
lua语言 简单类测试
yinsua · 2024-10-14 · via 博客园 - yinsua

注意:定义函数和调用函数时都需要使用冒号,使用冒号了的函数会自动拥有self属性,才能实现类,否则使用的是共同的table属性,无法实现每个实例都拥有自己的变量。
注意:不要通过对new函数传参来初始化类的成员变量,建议额外添加函数进行类成员的初始化!

Class = {
    member_var1 = 0,
}

function Class:member_func1(arg1)
    print(self.member_var1)
    self.member_var1 = arg1
    print(self.member_var1)
end

-- 注意:不要通过对new函数传参来初始化类的成员变量,建议额外添加函数进行类成员的初始化 
function Class:new(obj)
    obj = obj or {}
    setmetatable(obj, self) --设置obj的metatable为self(即class类),这样可以拥有class类的成员函数与成员变量,但却不与其它实例共享。
    self.__index = self   --如在obj上查找不到的域,则会在其__index上继续查找,从而实现类的继承
    return obj
end

--初始化函数
function on_init()
    print "on_init"
    local obj1 = Class:new()
    obj1:member_func1(1)
    local obj2 = Class:new()
    obj2:member_func1(2)
end

on_init()

output:
on_init
0
1
0
2