首页 > 解决方案 > 确定一个变量是否来自 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我必须添加的每一个都这样做,所以我想知道是否有更好的方法来做到这一点。

标签: lua

解决方案


您可以制作一个查找表,也称为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


推荐阅读