Swift 数字

Swift 数字通过作用于单个数字的实用方法扩展了 Swift 内置的整数类型。

用法

数字总是相对于基数位置系统。因此,所有方法都采用一个 usingBase 参数,该参数默认为基数 10,即十进制系统。

目录

数字个数

计算数字的位数。

let _ = 2014.countDigits() // returns 4
let _ = 2014.countDigits(usingBase: 16) // returns 3, as 2014 = 0x7de

数字之和

计算数字的总和。

let _ = 2014.sumDigits() // returns 7, as 7 = 2 + 0 + 1 + 4
let _ = 0x7de.sumDigits(usingBase: 16) // returns 34 or 0x22, as 0x22 = 0x7 + 0xd + 0xe

数字反转

反转数字的顺序。

let _ = 2014.revertDigits() // returns 4102
let _ = 0x7de.revertDigits(usingBase: 16) // returns 3799 or 0xed7

数字反相

通过从最大可能的数字中减去每个数字来反转它,例如,在十进制系统中是 9。因此,0 变为 9 = 9 - 0,1 变为 8 = 9 - 1,等等。

let _ = 2014.invertDigits() // returns 7985
let _ = 0x7de.invertDigits(usingBase: 16) // returns 2081 or 0x821

数字替换

将数字的所有出现替换为另一个数字。

var counter = 1010
counter.replaceDigit(0, with: 1)
// counter == 1111

var hexCounter = 0xf0
hexCounter.replaceDigit(0xf, with: 0xc, usingBase: 16)
// counter == 0xc0 or 192

或者,有一个非变异方法

var counter = 1010.replacingDigit(0, with: 1)
// counter == 1111

数字迭代器

返回一个遍历数字的迭代器。

for digit in 2014.digits() {
    print(digit)
}
// prints
// 2
// 0
// 1
// 4

for digit in 0x7de.digits(usingBase: 16) {
    print(digit)
}
// prints
// 7
// 13 or 0xd
// 14 or 0xe

数字数组

返回一个数组,其中包含数字的数字,最高有效数字位于开头。

let _ = 2014.asDigits() // returns [2, 0, 1, 4]
let _ = 0xfde.asDigits(usingBase: 16) // returns [15 or 0xf, 13 or 0xd, 14 or 0xe]

最高位因子

返回数字中包含的最高位因子,即最高有效数字的因子。

let _ = 12.highestPositionalFactor() // returns 10, as 12 = 1 * 10 + 2 * 1
let _ = 933.highestPositionalFactor()) // returns 100, as 933 = 9 * 100 + 3 * 10 + 3 * 1

let _ = 0xc.highestPositionalFactor(usingBase: 16)) // returns 1, as 0xc = 12 * 1
let _ = 0x5d.highestPositionalFactor(usingBase: 16)) // returns 16, as 0x5d = 5 * 16 + 13 * 1

添加 Digits 作为依赖项

要在 SwiftPM 项目中使用 Digits 库,请将其添加到您的包和命令行可执行目标的依赖项中

let package = Package(
    // name, platforms, products, etc.
    dependencies: [
        // other dependencies
        .package(url: "https://github.com/astzweig/swift-digits", from: "1.0.0"),
    ],
    targets: [
        .executableTarget(name: "<command-line-tool>", dependencies: [
            // other dependencies
            .product(name: "Digits", package: "swift-digits"),
        ]),
        // other targets
    ]
)

支持的版本

最新版本的 swift-digits 支持 Swift 5.5 及更高版本。 下面详细介绍了 swift-digits 版本支持的最低 Swift 版本

swift-digits 最低 Swift 版本
0.0.1 ... 5.5