Repo // 函數->函式。
This commit is contained in:
parent
ece3f72ee5
commit
6d4adea6ed
|
@ -57,7 +57,7 @@ extension String {
|
|||
}
|
||||
}
|
||||
|
||||
// MARK: - 引入小數點位數控制函數
|
||||
// MARK: - 引入小數點位數控制函式
|
||||
|
||||
// Ref: https://stackoverflow.com/a/32581409/4162914
|
||||
extension Float {
|
||||
|
@ -67,7 +67,7 @@ extension Float {
|
|||
}
|
||||
}
|
||||
|
||||
// MARK: - 引入冪乘函數
|
||||
// MARK: - 引入冪乘函式
|
||||
|
||||
// Ref: https://stackoverflow.com/a/41581695/4162914
|
||||
precedencegroup ExponentiationPrecedence {
|
||||
|
|
|
@ -25,7 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
*/
|
||||
|
||||
/// 該檔案乃按鍵調度模組的核心部分,主要承接型別初期化內容、協定內容、以及
|
||||
/// 被封裝的「與 Megrez 組字引擎和 Tekkon 注拼引擎對接的」各種工具函數。
|
||||
/// 被封裝的「與 Megrez 組字引擎和 Tekkon 注拼引擎對接的」各種工具函式。
|
||||
/// 注意:不要把 composer 注拼槽與 compositor 組字器這兩個概念搞混。
|
||||
|
||||
import Cocoa
|
||||
|
@ -57,7 +57,7 @@ class KeyHandler {
|
|||
var currentLM: vChewing.LMInstantiator = .init() // 當前主語言模組
|
||||
var currentUOM: vChewing.LMUserOverride = .init() // 當前半衰記憶模組
|
||||
var walkedAnchors: [Megrez.NodeAnchor] = [] // 用以記錄爬過的節錨的陣列
|
||||
/// 委任物件 (ctlInputMethod),以便呼叫其中的函數。
|
||||
/// 委任物件 (ctlInputMethod),以便呼叫其中的函式。
|
||||
var delegate: KeyHandlerDelegate?
|
||||
|
||||
/// InputMode 需要在每次出現內容變更的時候都連帶重設組字器與各項語言模組,
|
||||
|
@ -111,7 +111,7 @@ class KeyHandler {
|
|||
///
|
||||
/// 該過程讀取的權重資料是經過 Viterbi 演算法計算得到的結果。
|
||||
///
|
||||
/// 該函數的爬取順序是從頭到尾。
|
||||
/// 該函式的爬取順序是從頭到尾。
|
||||
func walk() {
|
||||
walkedAnchors = compositor.walk()
|
||||
|
||||
|
@ -153,7 +153,7 @@ class KeyHandler {
|
|||
/// 用以組建聯想詞陣列的函式。
|
||||
/// - Parameter key: 給定的聯想詞的開頭字。
|
||||
/// - Returns: 抓取到的聯想詞陣列。
|
||||
/// 不會是 nil,但那些負責接收結果的函數會對空白陣列結果做出正確的處理。
|
||||
/// 不會是 nil,但那些負責接收結果的函式會對空白陣列結果做出正確的處理。
|
||||
func buildAssociatePhraseArray(withKey key: String) -> [String] {
|
||||
var arrResult: [String] = []
|
||||
if currentLM.hasAssociatedPhrasesForKey(key) {
|
||||
|
@ -347,7 +347,7 @@ class KeyHandler {
|
|||
composer.clear()
|
||||
}
|
||||
|
||||
/// 用於網頁 Ruby 的注音需要按照教科書印刷的方式來顯示輕聲。該函數負責這種轉換。
|
||||
/// 用於網頁 Ruby 的注音需要按照教科書印刷的方式來顯示輕聲。該函式負責這種轉換。
|
||||
/// - Parameters:
|
||||
/// - target: 要拿來做轉換處理的讀音鏈。
|
||||
/// - newSeparator: 新的讀音分隔符。
|
||||
|
|
|
@ -150,7 +150,7 @@ extension KeyHandler {
|
|||
|
||||
// 這裡 inputValidityCheck() 是讓注拼槽檢查 charCode 這個 UniChar 是否是合法的注音輸入。
|
||||
// 如果是的話,就將這次傳入的這個按鍵訊號塞入注拼槽內且標記為「keyConsumedByReading」。
|
||||
// 函數 composer.receiveKey() 可以既接收 String 又接收 UniChar。
|
||||
// 函式 composer.receiveKey() 可以既接收 String 又接收 UniChar。
|
||||
if !skipPhoneticHandling && composer.inputValidityCheck(key: charCode) {
|
||||
composer.receiveKey(fromCharCode: charCode)
|
||||
keyConsumedByReading = true
|
||||
|
@ -397,7 +397,7 @@ extension KeyHandler {
|
|||
} else {
|
||||
// 得在這裡先 commit buffer,不然會導致「在摁 ESC 離開符號選單時會重複輸入上一次的組字區的內容」的不當行為。
|
||||
// 於是這裡用「模擬一次 Enter 鍵的操作」使其代為執行這個 commit buffer 的動作。
|
||||
// 這裡不需要該函數所傳回的 bool 結果,所以用「_ =」解消掉。
|
||||
// 這裡不需要該函式所傳回的 bool 結果,所以用「_ =」解消掉。
|
||||
_ = handleEnter(state: state, stateCallback: stateCallback, errorCallback: errorCallback)
|
||||
stateCallback(InputState.SymbolTable(node: SymbolNode.root, isTypingVertical: input.isTypingVertical))
|
||||
return true
|
||||
|
|
|
@ -24,11 +24,11 @@ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
/// 該檔案乃按鍵調度模組的用以承載「根據按鍵行為來調控模式」的各種成員函數的部分。
|
||||
/// 該檔案乃按鍵調度模組的用以承載「根據按鍵行為來調控模式」的各種成員函式的部分。
|
||||
|
||||
import Cocoa
|
||||
|
||||
// MARK: - § 根據按鍵行為來調控模式的函數 (Functions Interact With States).
|
||||
// MARK: - § 根據按鍵行為來調控模式的函式 (Functions Interact With States).
|
||||
|
||||
extension KeyHandler {
|
||||
// MARK: - 構築狀態(State Building)
|
||||
|
@ -168,11 +168,11 @@ extension KeyHandler {
|
|||
/// 拿著給定的聯想詞陣列資料內容,切換至聯想詞狀態。
|
||||
///
|
||||
/// 這次重寫時,針對「buildAssociatePhraseStateWithKey」這個(用以生成帶有
|
||||
/// 聯想詞候選清單的結果的狀態回呼的)函數進行了小幅度的重構處理,使其始終
|
||||
/// 可以從 Core 部分的「buildAssociatePhraseArray」函數獲取到一個內容類型
|
||||
/// 為「String」的標準 Swift 陣列。這樣一來,該聯想詞狀態回呼函數將始終能
|
||||
/// 夠傳回正確的結果形態、永遠也無法傳回 nil。於是,所有在用到該函數時以
|
||||
/// 回傳結果類型判斷作為合法性判斷依據的函數,全都將依據改為檢查傳回的陣列
|
||||
/// 聯想詞候選清單的結果的狀態回呼的)函式進行了小幅度的重構處理,使其始終
|
||||
/// 可以從 Core 部分的「buildAssociatePhraseArray」函式獲取到一個內容類型
|
||||
/// 為「String」的標準 Swift 陣列。這樣一來,該聯想詞狀態回呼函式將始終能
|
||||
/// 夠傳回正確的結果形態、永遠也無法傳回 nil。於是,所有在用到該函式時以
|
||||
/// 回傳結果類型判斷作為合法性判斷依據的函式,全都將依據改為檢查傳回的陣列
|
||||
/// 是否為空:如果陣列為空的話,直接回呼一個空狀態。
|
||||
/// - Parameters:
|
||||
/// - key: 給定的索引鍵(也就是給定的聯想詞的開頭字)。
|
||||
|
@ -760,7 +760,7 @@ extension KeyHandler {
|
|||
return true
|
||||
}
|
||||
|
||||
// 此處僅借用該函數生成結果內的某個物件,不用糾結「是否縱排輸入」。
|
||||
// 此處僅借用該函式生成結果內的某個物件,不用糾結「是否縱排輸入」。
|
||||
let candidates = buildCandidate(state: state).candidates
|
||||
guard !candidates.isEmpty else {
|
||||
IME.prtDebugIntel("3378A6DF")
|
||||
|
@ -796,7 +796,7 @@ extension KeyHandler {
|
|||
/// 那些字詞長度不小於 2 的單元圖。換言之,如果使用者敲了兩個
|
||||
/// 注音讀音、卻發現這兩個注音讀音各自的單字權重遠高於由這兩個
|
||||
/// 讀音組成的雙字詞的權重、導致這個雙字詞並未在爬軌時被自動
|
||||
/// 選中的話,則使用者可以直接摁下本函數對應的按鍵來輪替候選字即可。
|
||||
/// 選中的話,則使用者可以直接摁下本函式對應的按鍵來輪替候選字即可。
|
||||
/// (預設情況下是 (Shift+)Tab 來做正 (反) 向切換,但也可以用
|
||||
/// Shift(+CMD)+Space 來切換、以應對臉書綁架 Tab 鍵的情況。
|
||||
if candidates[0] == currentValue {
|
||||
|
|
|
@ -152,7 +152,7 @@ public struct Tekkon {
|
|||
ensureType()
|
||||
}
|
||||
|
||||
/// 用來自動更新自身的屬性值的函數。
|
||||
/// 用來自動更新自身的屬性值的函式。
|
||||
mutating func ensureType() {
|
||||
if Tekkon.allowedConsonants.contains(value) {
|
||||
type = .consonant
|
||||
|
@ -228,7 +228,7 @@ public struct Tekkon {
|
|||
consonant.value + semivowel.value + vowel.value + intonation.value
|
||||
}
|
||||
|
||||
/// 與 value 類似,這個函數就是用來決定輸入法組字區內顯示的注音/拼音內容,
|
||||
/// 與 value 類似,這個函式就是用來決定輸入法組字區內顯示的注音/拼音內容,
|
||||
/// 但可以指定是否輸出教科書格式(拼音的調號在字母上方、注音的輕聲寫在左側)。
|
||||
/// - Parameters:
|
||||
/// - isHanyuPinyin: 是否將輸出結果轉成漢語拼音。
|
||||
|
@ -251,7 +251,7 @@ public struct Tekkon {
|
|||
}
|
||||
}
|
||||
|
||||
// 該函數僅用來獲取給 macOS InputMethod Kit 的內文組字區使用的顯示字串。
|
||||
// 該函式僅用來獲取給 macOS InputMethod Kit 的內文組字區使用的顯示字串。
|
||||
/// - Parameters:
|
||||
/// - isHanyuPinyin: 是否將輸出結果轉成漢語拼音。
|
||||
public func getInlineCompositionForIMK(isHanyuPinyin: Bool = false) -> String {
|
||||
|
@ -285,7 +285,7 @@ public struct Tekkon {
|
|||
!vowel.isEmpty || !semivowel.isEmpty || !consonant.isEmpty
|
||||
}
|
||||
|
||||
// MARK: 注拼槽對外處理函數
|
||||
// MARK: 注拼槽對外處理函式
|
||||
|
||||
/// 初期化一個新的注拼槽。可以藉由 @input 參數指定初期已經傳入的按鍵訊號。
|
||||
/// 還可以在初期化時藉由 @arrange 參數來指定注音排列(預設為「.ofDachen」大千佈局)。
|
||||
|
@ -309,7 +309,7 @@ public struct Tekkon {
|
|||
|
||||
// MARK: - Public Functions
|
||||
|
||||
/// 用於檢測「某個輸入字符訊號的合規性」的函數。
|
||||
/// 用於檢測「某個輸入字符訊號的合規性」的函式。
|
||||
///
|
||||
/// 注意:回傳結果會受到當前注音排列 parser 屬性的影響。
|
||||
/// - Parameters:
|
||||
|
@ -344,7 +344,7 @@ public struct Tekkon {
|
|||
}
|
||||
|
||||
/// 接受傳入的按鍵訊號時的處理,處理對象為 String。
|
||||
/// 另有同名函數可處理 UniChar 訊號。
|
||||
/// 另有同名函式可處理 UniChar 訊號。
|
||||
///
|
||||
/// 如果是諸如複合型注音排列的話,翻譯結果有可能為空,但翻譯過程已經處理好聲介韻調分配了。
|
||||
/// - Parameters:
|
||||
|
@ -370,7 +370,7 @@ public struct Tekkon {
|
|||
}
|
||||
|
||||
/// 接受傳入的按鍵訊號時的處理,處理對象為 UniChar。
|
||||
/// 其實也就是先將 UniChar 轉為 String 再交給某個同名異參的函數來處理而已。
|
||||
/// 其實也就是先將 UniChar 轉為 String 再交給某個同名異參的函式來處理而已。
|
||||
///
|
||||
/// 如果是諸如複合型注音排列的話,翻譯結果有可能為空,但翻譯過程已經處理好聲介韻調分配了。
|
||||
/// - Parameters:
|
||||
|
@ -475,7 +475,7 @@ public struct Tekkon {
|
|||
}
|
||||
}
|
||||
|
||||
/// 用來檢測是否有調號的函數,預設情況下不判定聲調以外的內容的存無。
|
||||
/// 用來檢測是否有調號的函式,預設情況下不判定聲調以外的內容的存無。
|
||||
/// - Parameters:
|
||||
/// - withNothingElse: 追加判定「槽內是否僅有調號」。
|
||||
public func hasToneMarker(withNothingElse: Bool = false) -> Bool {
|
||||
|
@ -494,11 +494,11 @@ public struct Tekkon {
|
|||
|
||||
// MARK: - Parser Processings
|
||||
|
||||
// 注拼槽對內處理用函數都在這一小節。
|
||||
// 注拼槽對內處理用函式都在這一小節。
|
||||
|
||||
/// 根據目前的注音排列設定來翻譯傳入的 String 訊號。
|
||||
///
|
||||
/// 倚天或許氏鍵盤的處理函數會將分配過程代為處理過,此時回傳結果為空字串。
|
||||
/// 倚天或許氏鍵盤的處理函式會將分配過程代為處理過,此時回傳結果為空字串。
|
||||
/// - Parameters:
|
||||
/// - key: 傳入的 String 訊號。
|
||||
mutating func translate(key: String = "") -> String {
|
||||
|
@ -522,14 +522,14 @@ public struct Tekkon {
|
|||
case .ofFakeSeigyou:
|
||||
return Tekkon.mapFakeSeigyou[key] ?? ""
|
||||
case .ofHanyuPinyin, .ofSecondaryPinyin, .ofYalePinyin, .ofHualuoPinyin, .ofUniversalPinyin:
|
||||
break // 漢語拼音單獨用另外的函數處理
|
||||
break // 漢語拼音單獨用另外的函式處理
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
/// 倚天忘形注音排列比較麻煩,需要單獨處理。
|
||||
///
|
||||
/// 回傳結果是空字串的話,不要緊,因為該函數內部已經處理過分配過程了。
|
||||
/// 回傳結果是空字串的話,不要緊,因為該函式內部已經處理過分配過程了。
|
||||
/// - Parameters:
|
||||
/// - key: 傳入的 String 訊號。
|
||||
mutating func handleETen26(key: String = "") -> String {
|
||||
|
@ -612,7 +612,7 @@ public struct Tekkon {
|
|||
|
||||
/// 許氏鍵盤與倚天忘形一樣同樣也比較麻煩,需要單獨處理。
|
||||
///
|
||||
/// 回傳結果是空的話,不要緊,因為該函數內部已經處理過分配過程了。
|
||||
/// 回傳結果是空的話,不要緊,因為該函式內部已經處理過分配過程了。
|
||||
/// - Parameters:
|
||||
/// - key: 傳入的 String 訊號。
|
||||
mutating func handleHsu(key: String = "") -> String {
|
||||
|
@ -735,7 +735,7 @@ public struct Tekkon {
|
|||
|
||||
/// 大千忘形一樣同樣也比較麻煩,需要單獨處理。
|
||||
///
|
||||
/// 回傳結果是空的話,不要緊,因為該函數內部已經處理過分配過程了。
|
||||
/// 回傳結果是空的話,不要緊,因為該函式內部已經處理過分配過程了。
|
||||
/// - Parameters:
|
||||
/// - key: 傳入的 String 訊號。
|
||||
mutating func handleDachen26(key: String = "") -> String {
|
||||
|
|
|
@ -88,7 +88,7 @@ public enum IME {
|
|||
// MARK: - Initializing Language Models.
|
||||
|
||||
static func initLangModels(userOnly: Bool) {
|
||||
// mgrLangModel 的 loadUserPhrases 等函數在自動讀取 dataFolderPath 時,
|
||||
// mgrLangModel 的 loadUserPhrases 等函式在自動讀取 dataFolderPath 時,
|
||||
// 如果發現自訂目錄不可用,則會自動抹去自訂目錄設定、改採預設目錄。
|
||||
// 所以這裡不需要特別處理。
|
||||
mgrLangModel.loadUserAssociatesData()
|
||||
|
|
|
@ -61,7 +61,7 @@ extension vChewing {
|
|||
/// files are modified. It does not keep the reference of the data pathes but
|
||||
/// you have to pass the paths when you ask it to load.
|
||||
public class LMInstantiator: Megrez.LanguageModel {
|
||||
// 在函數內部用以記錄狀態的開關。
|
||||
// 在函式內部用以記錄狀態的開關。
|
||||
public var isPhraseReplacementEnabled = false
|
||||
public var isCNSEnabled = false
|
||||
public var isSymbolEnabled = false
|
||||
|
@ -100,10 +100,10 @@ extension vChewing {
|
|||
var lmReplacements = LMReplacments()
|
||||
var lmAssociates = LMAssociates()
|
||||
|
||||
// 初期化的函數先保留
|
||||
// 初期化的函式先保留
|
||||
override init() {}
|
||||
|
||||
// 以下這些函數命名暫時保持原樣,等弒神行動徹底結束了再調整。
|
||||
// 以下這些函式命名暫時保持原樣,等弒神行動徹底結束了再調整。
|
||||
|
||||
public var isLanguageModelLoaded: Bool { lmCore.isLoaded() }
|
||||
public func loadLanguageModel(path: String) {
|
||||
|
|
|
@ -132,12 +132,12 @@ extension vChewing {
|
|||
|
||||
/// 【該功能無法使用】根據給定的前述讀音索引鍵與當前讀音索引鍵,來獲取資料庫陣列內的對應資料陣列的字串首尾範圍資料、據此自 strData 取得字串形式的資料、生成雙元圖陣列。
|
||||
///
|
||||
/// 威注音輸入法尚未引入雙元圖支援,所以該函數並未擴充相關功能,自然不會起作用。
|
||||
/// 威注音輸入法尚未引入雙元圖支援,所以該函式並未擴充相關功能,自然不會起作用。
|
||||
/// - parameters:
|
||||
/// - precedingKey: 前述讀音索引鍵
|
||||
/// - key: 當前讀音索引鍵
|
||||
public func bigramsForKeys(precedingKey: String, key: String) -> [Megrez.Bigram] {
|
||||
// 這裡用了點廢話處理,不然函數構建體會被 Swift 格式整理工具給毀掉。
|
||||
// 這裡用了點廢話處理,不然函式構建體會被 Swift 格式整理工具給毀掉。
|
||||
// 其實只要一句「[Megrez.Bigram]()」就夠了。
|
||||
precedingKey == key ? [Megrez.Bigram]() : [Megrez.Bigram]()
|
||||
}
|
||||
|
|
|
@ -126,12 +126,12 @@ extension vChewing {
|
|||
|
||||
/// 【該功能無法使用】根據給定的前述讀音索引鍵與當前讀音索引鍵,來獲取資料庫陣列內的對應資料陣列的 UTF8 資料、就地分析、生成雙元圖陣列。
|
||||
///
|
||||
/// 威注音輸入法尚未引入雙元圖支援,所以該函數並未擴充相關功能,自然不會起作用。
|
||||
/// 威注音輸入法尚未引入雙元圖支援,所以該函式並未擴充相關功能,自然不會起作用。
|
||||
/// - parameters:
|
||||
/// - precedingKey: 前述讀音索引鍵
|
||||
/// - key: 當前讀音索引鍵
|
||||
public func bigramsForKeys(precedingKey: String, key: String) -> [Megrez.Bigram] {
|
||||
// 這裡用了點廢話處理,不然函數構建體會被 Swift 格式整理工具給毀掉。
|
||||
// 這裡用了點廢話處理,不然函式構建體會被 Swift 格式整理工具給毀掉。
|
||||
// 其實只要一句「[Megrez.Bigram]()」就夠了。
|
||||
precedingKey == key ? [Megrez.Bigram]() : [Megrez.Bigram]()
|
||||
}
|
||||
|
@ -167,7 +167,7 @@ extension vChewing {
|
|||
rangeMap[cnvPhonabetToASCII(key)] != nil
|
||||
}
|
||||
|
||||
/// 內部函數,用以將注音讀音索引鍵進行加密。
|
||||
/// 內部函式,用以將注音讀音索引鍵進行加密。
|
||||
///
|
||||
/// 使用這種加密字串作為索引鍵,可以增加對 plist 資料庫的存取速度。
|
||||
///
|
||||
|
@ -190,7 +190,7 @@ extension vChewing {
|
|||
return strOutput
|
||||
}
|
||||
|
||||
/// 內部函數,用以將被加密的注音讀音索引鍵進行解密。
|
||||
/// 內部函式,用以將被加密的注音讀音索引鍵進行解密。
|
||||
///
|
||||
/// 如果傳入的字串當中包含 ASCII 下畫線符號的話,則表明該字串並非注音讀音字串,會被忽略處理。
|
||||
/// - parameters:
|
||||
|
|
|
@ -29,7 +29,7 @@ import Cocoa
|
|||
/// 我們不能讓 mgrLangModel 這個靜態管理器來承載下面這些副本變數。
|
||||
/// 所以,這些副本變數只能放在 mgrLangModel 的外部。
|
||||
/// 同時,這些變數不對外開放任意存取權限。
|
||||
/// 我們只在 mgrLangModel 內部寫幾個回傳函數、供其餘控制模組來讀取。
|
||||
/// 我們只在 mgrLangModel 內部寫幾個回傳函式、供其餘控制模組來讀取。
|
||||
|
||||
private var gLangModelCHS = vChewing.LMInstantiator()
|
||||
private var gLangModelCHT = vChewing.LMInstantiator()
|
||||
|
@ -37,7 +37,7 @@ private var gUserOverrideModelCHS = vChewing.LMUserOverride()
|
|||
private var gUserOverrideModelCHT = vChewing.LMUserOverride()
|
||||
|
||||
enum mgrLangModel {
|
||||
/// 寫幾個回傳函數、供其餘控制模組來讀取那些被設為 fileprivate 的器外變數。
|
||||
/// 寫幾個回傳函式、供其餘控制模組來讀取那些被設為 fileprivate 的器外變數。
|
||||
public static var lmCHS: vChewing.LMInstantiator { gLangModelCHS }
|
||||
public static var lmCHT: vChewing.LMInstantiator { gLangModelCHT }
|
||||
public static var uomCHS: vChewing.LMUserOverride { gUserOverrideModelCHS }
|
||||
|
@ -295,7 +295,7 @@ enum mgrLangModel {
|
|||
// The above "&" mutates the "isFolder" value to the real one received by the "folderExist".
|
||||
|
||||
// 路徑沒有結尾斜槓的話,會導致目錄合規性判定失準。
|
||||
// 出於每個型別每個函數的自我責任原則,這裡多檢查一遍也不壞。
|
||||
// 出於每個型別每個函式的自我責任原則,這裡多檢查一遍也不壞。
|
||||
var folderPath = folderPath // Convert the incoming constant to a variable.
|
||||
if isFolder.boolValue {
|
||||
folderPath?.ensureTrailingSlash()
|
||||
|
@ -351,7 +351,7 @@ enum mgrLangModel {
|
|||
return true
|
||||
}
|
||||
|
||||
// MARK: - 用以讀取使用者語彙檔案目錄的函數,會自動對 mgrPrefs 當中的參數糾偏。
|
||||
// MARK: - 用以讀取使用者語彙檔案目錄的函式,會自動對 mgrPrefs 當中的參數糾偏。
|
||||
|
||||
// 當且僅當 mgrPrefs 當中的參數不合規(比如非實在路徑、或者無權限寫入)時,才會糾偏。
|
||||
|
||||
|
|
|
@ -68,7 +68,7 @@ extension Megrez {
|
|||
joinSeparator = separator
|
||||
}
|
||||
|
||||
/// 組字器自我清空專用函數。
|
||||
/// 組字器自我清空專用函式。
|
||||
public func clear() {
|
||||
mutCursorIndex = 0
|
||||
mutReadings.removeAll()
|
||||
|
@ -115,7 +115,7 @@ extension Megrez {
|
|||
/// 移除該組字器的第一個讀音單元。
|
||||
///
|
||||
/// 用於輸入法組字區長度上限處理:
|
||||
/// 將該位置要溢出的敲字內容遞交之後、再執行這個函數。
|
||||
/// 將該位置要溢出的敲字內容遞交之後、再執行這個函式。
|
||||
@discardableResult public func removeHeadReadings(count: Int) -> Bool {
|
||||
let count = abs(count) // 防呆
|
||||
if count > length {
|
||||
|
|
|
@ -24,11 +24,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
*/
|
||||
|
||||
extension Megrez {
|
||||
/// 語言模型框架,回頭實際使用時需要派生一個型別、且重寫相關函數。
|
||||
/// 語言模型框架,回頭實際使用時需要派生一個型別、且重寫相關函式。
|
||||
open class LanguageModel {
|
||||
public init() {}
|
||||
|
||||
// 這裡寫了一點假內容,不然有些 Swift 格式化工具會破壞掉函數的參數設計。
|
||||
// 這裡寫了一點假內容,不然有些 Swift 格式化工具會破壞掉函式的參數設計。
|
||||
|
||||
/// 給定鍵,讓語言模型找給一筆單元圖。
|
||||
open func unigramsFor(key: String) -> [Megrez.Unigram] {
|
||||
|
|
|
@ -49,7 +49,7 @@ extension Megrez {
|
|||
hasher.combine(score)
|
||||
}
|
||||
|
||||
// 這個函數不再需要了。
|
||||
// 這個函式不再需要了。
|
||||
public static func compareScore(a: Unigram, b: Unigram) -> Bool {
|
||||
a.score > b.score
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue