如何制作一个可以搜索用户输入的数组中的数据的函数?

我正在学习在Lua中编程,并尝试使用函数和数组练习。

这个程序的想法是,程序接受用户输入并验证该数据是否存在于数组中,否则应返回不存在。

number = {"1", "2", "3"}
function prompt(input)
    if input == number then
        return print("Yes your number is here")
    else
        return print("Nope, your number not here")
    end
end

prompt = tostring(io.read())

然而,似乎我必须不明白如何调用我的函数在这种情况下使用它,我该如何构建它?

点赞
用户2858170
用户2858170

函数使用调用运算符 () 调用。

函数定义:

function myFunction(text)
  print(text)
end

函数调用:

myFunction("Hello world!")

promt = tostring(io.read())promt 指向 tostring(io.read()) 的返回值,因此 promt 不再指向之前定义的函数。

您想要做类似于 prompt(io.read()) 的操作。

请注意,您的代码还有一些其他问题。例如,您正在尝试将表与字符串值进行比较,这始终为假。您必须逐个循环检查每个表元素。

请进行入门教程并阅读Lua参考手册。

2020-05-12 10:11:35
用户2110909
用户2110909

您希望调用提示函数的正确方式如下:

prompt(tostring(io.read()))

您正在重新声明 prompt 为输入值,而不是函数。

此外,您检查输入值是否存在于表中的方法是不正确的。

if input == number then

这在任何(或至少大多数)编程语言中是行不通的。您在这里所做的是将一个字符串与一个表进行比较。是的,您正在进行比较,而不是检查表中是否包含该字符串。基本上,您告诉代码:我的字符串是否等价于这个表?。

为了找出字符串是否存在于表中,您需要循环该表并逐个比较表中的每个值。以下是一个讲述此问题的文章:

在 Lua 列表中搜索项目

下面是您的代码应该是什么样子的:

local number = {"1", "2", "3"}
function prompt(input)
    for index, item in ipairs(number) do
        if input == item then
            -- 如果找到匹配项则打印并返回
            return print("Yes your number is here")
        end
    end

    -- 没有找到匹配项。我们知道上面的代码会返回,
    -- 如果找到匹配项的话,因此不会到达代码的这一部分。
    return print("Nope, your number not here")
end

prompt(tostring(io.read()))
2020-05-12 10:41:59