@IRuuy

Как исправить нарушение принципа DRY?

public Token match(ITokenType expectedToken, int tokenNum) {
        if(hasToken(_currentTokenNum))
            if(expectedToken == getToken(tokenNum).get_type())
                return getToken(tokenNum);
        return null;
    }

public Token match(Class<?> clazz, int tokenNum) {
        if(hasToken(_currentTokenNum))
            if(clazz.isInstance(getToken(tokenNum).get_type()))
                return getToken(tokenNum);
        return null;
}
  • Вопрос задан
  • 341 просмотр
Решения вопроса 1
@IRuuy Автор вопроса
Прикрепил решение
public Token match(ITokenType expectedToken, int tokenNum) {
    return match(t -> expectedToken == t.get_type(), tokenNum);
}

public Token match(Class<?> clazz, int tokenNum) {
    return match(t -> clazz.isInstance(t.get_type()), tokenNum);
}

private Token match(Predicate<Token> predicate, int tokenNum) {
    if(hasToken(_currentTokenNum))
        if (predicate.test(getToken(tokenNum)))
            return getToken(tokenNum);

    return null;
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Alexandroppolus
@Alexandroppolus
кодир
Первым параметром передать проверялку для ITokenType.
Например, лямбду boolean checker(ITokenType tokenType)

внутри match вызвать с параметром getToken(tokenNum).get_type()
Ответ написан
Комментировать
Steel_Balls
@Steel_Balls
ChatGpt помог:
cHxLQwg.png
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы