lua - 确定一个变量是否来自 Lua 中多个值的列表
问题描述
我试图找出一种更简单的方法来确定变量是否是 Lua 中的几个值之一。在这种情况下,我试图检查变量 Player.Name
是否等于"Player1"
,"Player2"
或"Player3"
(示例名称),然后更改变量image.Image
:
此代码有效:
if Player.Name == "Player1" or Player.Name == "Player2" or Player.Name == "Player3" then
image.Image = "rbxassetid://4743025782"
else
image.Image = "rbxassetid://0"
end
但我讨厌为Player.Name
我必须添加的每一个都这样做,所以我想知道是否有更好的方法来做到这一点。
解决方案
您可以制作一个查找表,也称为set
.
local AllowedPlayerNames = {
Player1 = true,
Player2 = true,
Player3 = true
}
if AllowedPlayerNames[Player.Name] then -- If `Player.Name` is in AllowedPlayerNames it returns its value, which is `true`.
image.Image = "rbxassetid://4743025782"
else
image.Image = "rbxassetid://0"
end
查找表是一个常规表,但键是可接受的值,值可以是任何值,我们需要真实的值才能使 if 语句起作用,所以true
很好。
注意:如果遵循 Lua 的命名约定,您可以将字符串键写为变量
Lua 中的名称(也称为标识符)可以是任何由拉丁字母、阿拉伯-印度数字和下划线组成的字符串,不以数字开头,也不是保留字。标识符用于命名变量、表字段和标签。
如果您的类型或字符串与其他字符不同,请使用以下语法:
["Player1"] = true
(这与 相同Player1 = true
)
推荐阅读
- java - 如何避免 PostgreSQL 中的死锁
- java - 尝试删除所有缓存时出现 Ehcache 异常
- java - 无法从 Spring Boot 微服务模块中的 Zuul Header 获取 JWT Token
- android - 无法同时运行 Appium 测试模拟器和真实移动设备
- android - 是否可以在 Android Studio 中使用已发布的签名 APK 构建 App Bundle?我想将 apk 迁移到 Play 商店的应用程序包
- jmeter - 将 JMeter 与 ZAP 工具集成
- angular - 如何在 TypeScript 中同步下拉菜单?
- c# - 如何在应用程序代码中删除 app.config
- ios - 在蒙面的 UIView 周围添加阴影
- machine-learning - 在使用全卷积网络的语义分割中,为什么交叉熵损失优于 L1 或 L2 损失?