ошибка печати моего кода, даже если ввод правильный

#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. Отредактированный ответ посмотрите, поможет ли это