Я хочу подойти к своему ответу на эту проблему с помощью двух концепций в разработке программ: первая - это зависимость проектирования от внешней функции, а вторая - конечный автомат.
Я делаю некоторые предположенияи предположения здесь, но из вашего описания видно, что вы закрепились на функции «добавления» текстовой области и теперь программируете, так что вы можете использовать ее в нескольких ситуациях: добавление числа к номеру на дисплее,и добавление нового номера на дисплей («добавление» на пустой дисплей).
Это хорошая функция textarea, она может быть полезна для вашей программы, но вам не нужно использовать ее здесь.
Как бы вы ни решили эту проблему, у вас есть «состояние» для сохранения - когда пользователь нажимает клавишу, действие программы зависит от ее состояния.Вы должны быть в состоянии определить, в каком состоянии он находится, чтобы вы могли правильно запрограммировать ответ на нажатие клавиши.
Итак, позвольте мне предложить следующее: иметь переменную, которая хранит то, что вы хотите на дисплее - всеЭто.Когда кто-то нажимает клавишу, каким-либо образом распознайте свое состояние и обновите эту переменную в соответствии с тем, что должно быть на дисплее.Когда вы закончите обработку, установите для текстовой области значение этой переменной.
Обратите внимание, что это позволяет программному потоку - принимать входные данные, обрабатывать, отображать - одинаковые во всех случаях.Ни одна часть программы не должна выяснять, следует ли «очистить» дисплей.Из-за этого в сохраняемом вами состоянии меньше сложности.
Если ваше состояние «накапливает числа для первого операнда», и нажата цифра, вы добавляете нажатую цифру к отображаемой строке..
Если ваше состояние «накапливается ...» и оператор нажимается, добавьте оператор.
Если ваше состояние «оператор только что нажал» и нажата другая цифра, установитепеременная к числу нажатых.
и т. д.
Это могут быть или не быть правильные состояния для использования, я просто приведу их здесь в качестве простых примеров.Но, сделав таким же образом, я думаю, вы обнаружите, что ваша программа становится проще в написании и понимании - вы удаляете код, который взаимодействует между функцией «добавления» и состоянием программы, что делало ваш код более сложным, чем он.я должен был.
Я обнаружил, что программисты (включая меня) очень часто привязываются к какой-то реализации, над которой мы затем работаем - на самом деле, мы всегда работаем над реализациями некоторыхстепень, это то, что мы делаем.Но иногда, если мы сделаем шаг назад, мы увидим, что мы делаем больше программ, работая над некоторыми деталями реализации, которые мы можем устранить, и, устраняя их, мы можем упростить наше решение.