這些描述對我來說似乎是一樣的。“需要”與“需要”是什么意思?
// Returns the number of bytes required to store the String in a given encoding.
lengthOfBytes(using:)
// Returns the maximum number of bytes needed to store the receiver in a given encoding.
maximumLengthOfBytes(using:)
uj5u.com熱心網友回復:
lengthOfBytes(using:)回傳確切的數字,同時回傳maximumLengthOfBytes(using:)一個估計值,“可能比實際長度大很多”(用蘋果自己的話來說)
uj5u.com熱心網友回復:
這些方法之間的主要區別由其檔案的討論部分給出。
lengthOfBytes(using:):
結果是準確的,并在 O(n) 時間內回傳。
maximumLengthOfBytes(using:):
結果是一個估計值,并在 O(1) 時間內回傳;估計可能比實際需要的長度大很多。
它們可能不同的一個示例:UTF-8 字串編碼需要 1 到 4 個位元組來表示一個代碼點,但確切的表示取決于所表示的代碼點。lengthOfBytes(using:)將遍歷字串,計算每個字符的確切位元組數,同時maximumLengthOfBytes(using:)允許在不查看字串中的實際值的情況下對每個代碼點進行四舍五入。在這種情況下,回傳的最大值是實際需要的 3 倍:
import Foundation
let str = "Hello, world!"
print(str.lengthOfBytes(using: .utf8)) // => 13
print(str.maximumLengthOfBytes(using: .utf8)) // => 39
maximumLengthOfBytes(using:)可以在幾乎沒有計算的情況下立即為您提供答案,但代價是高估,有時甚至是高估。使用哪種權衡取決于您的特定用例。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/496990.html
