Можно ли упростить конструкцию вида:
if (Me.location = room1 or Me.location = room2 or ...)
?
Например, быстро проверив принадлежность объекта Me.location к списку комнат?
Способ с циклом очевиден, но, может быть, язык предлагает лучший инструмент?
Заранее извиняюсь, если вопрос глупый.
Спасибо ![]()
Отредактировано Hind (24.10.2007 16:40)
Неактивен
Hind написал:
Можно ли упростить конструкцию вида:
if (Me.location = room1 or Me.location = room2 or ...)
?
Например, быстро проверив принадлежность объекта Me.location к списку комнат?
Способ с циклом очевиден, но, может быть, язык предлагает лучший инструмент?
Имеется встроенная функция find, которая ищет элемент в списке или подстроку в строке и возвращает порядковый номер элемента в списке (или nil, если он не найден).
В Вашем случае оно могло бы работать так:
local RoomList;
RoomList:=[room1 room2 room3 room4 room5 room6]
if(find(RoomList, MyRoom)<>nil)
{...
}При этом, если MyRoom равна room3, функция вернет 3, а если MyRoom отсутствует в RoomList, то nil.
Hind написал:
Заранее извиняюсь, если вопрос глупый.
Эх... Хотел было побрюзжать на тему "читайте мануал, господа", но вспомнил, что эта глава еще не переведена;).
Неактивен
Gremour написал:
Лично мне вариант решения проблемы с помощью наследования кажется естественнее.
В данном конкретном случае да, но есть задачи, которые удобнее решать именно проверкой списка, и вот тут-то функция find крайне полезна...
Неактивен