Я хотел бы проверить значение атрибута перечисления объекта DOORs. Как это может быть сделано? И где я могу найти документацию DXL, описывающую такие основные функции?
if (o."Progress" == 0) // This does NOT work
{
// do something
}
Я хотел бы проверить значение атрибута перечисления объекта DOORs. Как это может быть сделано? И где я могу найти документацию DXL, описывающую такие основные функции?
if (o."Progress" == 0) // This does NOT work
{
// do something
}
Итак, после двух недель и просроченной награды я, наконец, сделал это. Enum-Attributes можно присвоить целочисленным или строковым переменным по желанию. Но вы должны присвоить значение переменной, чтобы выполнить такое преобразование. Он не приводится, когда выполняется простое сравнение, как в моем примере. Итак, вот решение:
int tmp = o."Progress"
if (tmp == 0)
{
// do something
}
Когда tmp
является строкой, возможно сравнение с литералами перечисления.
Это было просто. Не так ли? И здесь я наконец-то нашел руководство «Все, что вам нужно знать о DXL».
Вы также можете сделать
if(o."Progress" "" == "0")
{
//do something
}
Это приведёт значение атрибута к строке и сравнит его со строкой "0"
Для многозначных перечислений лучший способ — if (isMember(o."Progress", "0")) {
. Возможные перечисления для переменных с одним и несколькими перечислениями считаются строками, поэтому решение Стива — лучший способ dxl для одиночного перечисления.
Если вы говорите о «связанном номере», который можно назначить из поля «Редактировать типы», вам нужно начать с получения позиции строки перечисления в перечислении, а затем получить EnumName[k].value
.
Я не эксперт в DXL, поэтому единственный способ найти индекс, о котором я знаю, это перебрать 1 : EnumName.size
в цикле, и когда вы получите совпадение со строкой перечисления, используйте это значение индекса цикла для получения перечисление "связанный номер".