diff --git a/Source/Modules/InputHandler_HandleStates.swift b/Source/Modules/InputHandler_HandleStates.swift index b86bc578..e87376d3 100644 --- a/Source/Modules/InputHandler_HandleStates.swift +++ b/Source/Modules/InputHandler_HandleStates.swift @@ -715,12 +715,13 @@ extension InputHandler { let currentPaired = (currentNode.keyArray, currentNode.value) - var currentIndex: Int { + // 改成一次性計算,省得每次讀取時都被重複計算。 + let currentIndex: Int = { var result = 0 - for candidate in candidates { + theLoop: for candidate in candidates { if !currentNode.isOverridden { if candidates[0] == currentPaired { result = reverseOrder ? candidates.count - 1 : 1 } - break + break theLoop } result = (candidate == currentPaired && reverseOrder) @@ -728,13 +729,23 @@ extension InputHandler { if candidate == currentPaired { break } } return (0..