とあるClaude3.5との会話(SwiftUIのコード修正)
もうね、プログラム開発にClaude3.5は欠かせませんよ。ていうかワイはアホだったのかww
ワイ:allClearの状態で演算子を入れても無視してください
Claude3.5:
承知しました。`allClear`の状態で演算子を入力しても無視するように`ContentViewModel.swift`を修正します。具体的には、`setOperator`メソッドを更新して、新しい計算が始まっていない状態(つまり、`previousInput`が`nil`で、`currentInput`が"0"の状態)では演算子の入力を無視するようにします。
`ContentViewModel.swift`ファイルの`setOperator`メソッドを以下のように更新してください:
func setOperator(_ op: String) {
// allClearの状態(previousInputがnilで、currentInputが"0")では演算子を無視
if previousInput == nil && currentInput == "0" {
return
}
if isEqualJustPressed {
previousInput = lastResult
lastResult = nil
addCell(operatorSymbol: "", text: calculator.formatResult(), color: .blue)
} else if isNewInput && currentOperator != nil {
// 演算子が連続して押された場合、演算子を入れ替える
currentOperator = op
displayOperator = op
// 最後のセルの演算子を更新
if let lastIndex = cellContents.lastIndex(where: { !$0.operatorSymbol.isEmpty }) {
cellContents[lastIndex].operatorSymbol = op
}
return
} else if let previous = previousInput, let current = Decimal(string: currentInput), !currentInput.isEmpty && currentInput != "0" {
performOperation(previous, current, currentOperator ?? "")
addCell(operatorSymbol: currentOperator ?? "", text: currentInput, color: .gray)
previousInput = calculator.result
displayInput = calculator.formatResult()
} else if previousInput == nil {
previousInput = Decimal(string: currentInput)
addCell(operatorSymbol: "", text: currentInput, color: .gray)
}
currentOperator = op
displayOperator = op
isNewInput = true
isEqualJustPressed = false
}
この変更により、以下の動作が実現されます:
メソッドの最初で、`previousInput`が`nil`で、かつ`currentInput`が"0"の場合(つまり、`allClear`の状態)、メソッドを即座に終了します。これにより、この状態での演算子入力が無視されます。
それ以外の場合は、既存の論理に従って演算子の設定や計算を行います。
この修正により、`allClear`の状態(初期状態や`allClear`メソッドが呼ばれた直後の状態)で演算子を入力しても、その入力が無視されるようになります。ユーザーは最初に数字を入力してから演算子を入力する必要があります。
この記事が気に入ったらサポートをしてみませんか?