@p3trukh1n
NooB IN WeB

Как использовать if с несколькими значениями?

Добрый день.
Начал изучать LUA, и тут возник вопрос:

function streetIsMyHome()
	return 1, 2, 3
end

if streetIsMyHome() == 1, 2, 3 then
	print("Working")
end

Но, естественно, выдает ошибку.
Так, каким образом можно таки сравнить несколько значений?
  • Вопрос задан
  • 124 просмотра
Решения вопроса 1
dollar
@dollar Куратор тега Lua
Делай добро и бросай его в воду.
local x, y, z = streetIsMyHome()
if x == 1 and y == 2 and z == 3 then
  print("Working")
end


Если не хотите "мусорить" переменными в пространстве текущего файла или текущей области видимости, то:
Код
function streetIsMyHome()
  return 1, 2, 3
end

do
  local x, y, z = streetIsMyHome()
  if x == 1 and y == 2 and z == 3 then
    print("Working")
  end
end

Еще один вариант - написать свою собственную функцию сравнения:
Код
function isEqualAll(...) --сравнивает первую половину аргументов со второй
  local t = {...}
  local half = math.floor(#t/2 + 0.5);
  for i=1,half do
    if t[i] ~= t[i+half] then
      return false
    end
  end
  return true
end

function streetIsMyHome()
  return 1, 2, 3
end

if isEqualAll(1,2,3,streetIsMyHome()) then
  print("Working")
end

Но самое правильное и красивое - делать отдельную функцию для каждой конкретной задачи:
Код
function streetIsMyHome()
  return 1, 2, 3
end

function checkStreetIsMyHome(a,b,c)
  local x,y,z = streetIsMyHome()
  return a==x and b==y and c==z
end

if checkStreetIsMyHome(1,2,3) then
  print("Working")
end
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы