#kotlin
Вопрос:
Это исходный код
if (!isNullOrEmpty(configTypeBuilder.destinationField, RULE_CRITERIA_CONFIG_TYPE_BUILDER_DESTINATION_FIELD_PATH)) {
if (ruleAttributes.firstOrNull { ruleAttribute -> ruleAttribute == destinationField } == null) {
addValidationError(RULE_CRITERIA_CONFIG_TYPE_BUILDER_DESTINATION_FIELD_PATH, configTypeBuilder.destinationField, NOT_EXIST_CONSTRAINT)
}
}
Я изменяю код, просто добавляю недопустимое значение в список, а затем печатаю их, но теперь, когда я ввожу допустимое поле назначения после недопустимого поля назначения, все равно будет отображаться сообщение об ошибке, я не знаю, что происходит
val invalidDestination = hashSetOf<String>()
if (!isNullOrEmpty(configTypeBuilder.destinationField, RULE_CRITERIA_CONFIG_TYPE_BUILDER_DESTINATION_FIELD_PATH)) {
for (destinationField in destinationFieldList) {
if (!ruleAttributes.contains(destinationField)) {
invalidDestination.add(destinationField)
}
}
if (invalidDestination.size > 0) {
addValidationError(
"$RULE_CRITERIA_CONFIG_TYPE_BUILDER_DESTINATION_FIELD_PATH $NOT_EXIST_CONSTRAINT",
DESTINATION,
"$ADD_TAX_ENGINE_ATTRIBUTE_FIELDS $invalidDestination"
)
}
}
Ответ №1:
Если ваша цель состоит в том, чтобы показывать сообщение об ошибке только в том случае, если нет допустимых мест назначения, вам необходимо добавить еще одно условие в инструкцию if. Если нет, пожалуйста, проясните свой вопрос и опубликуйте всю функцию
Пример условия:
var foundValid = false
for (destinationField in destinationFieldList) {
if (!ruleAttributes.contains(destinationField)) {
invalidDestination.add(destinationField)
}else {
foundValid = true
break //if you need invalidDestination list for later remove this break
}
}
if (invalidDestination.size > 0 amp;amp; !foundValid) {
...
}
Комментарии:
1. можете ли вы показать мне, какое условие я должен добавить?
2. Отредактированный ответ посмотрите, поможет ли это