是否可以用接受两个参数的函数来映射数组?
像这样的:

let arr = [2,5,1,4,8,4]
let bankRateArr = arr.map(BankRate.init(amount:interestRate:))

class BankRate {
    let amount: Int
    let interestRate: Float

    init(amount: Int, interestRate: Float) {
        self.amount = amount
        self.interestRate = interestRate
    }
}

最佳答案

如果要将相同的利率传递给所有值,可以执行以下操作:

class BankRate: CustomStringConvertible {
    let amount: Int
    let interestRate: Float
    init(amount: Int, interestRate: Float){
        self.amount = amount
        self.interestRate = interestRate
    }

    var description: String {
        return "amount: \(amount), rate: \(interestRate)"
    }
}

let arr = [2, 5, 1, 4, 8, 4]
let bankRateArr = arr.map { BankRate(amount: $0, interestRate: 0.04) }
print(bankRateArr)

输出:
[金额:2,费率:0.04,金额:5,费率:0.04,金额:1,费率:0.04,金额:4,费率:0.04,金额:8,费率:0.04,金额:4,费率:0.04]
如果希望每个人都有自己的,可以使用元组:
let arr2 = [(2, 0.04), (5, 0.07), (1, 0.1), (4, 0.035), (8, 0.25), (4, 0.2)]
let bankRateArr2 = arr2.map { BankRate(amount: $0.0, interestRate: Float($0.1)) }
print(bankRateArr2)

输出:
[金额:2,费率:0.04,金额:5,费率:0.07,金额:1,费率:0.1,金额:4,费率:0.035,金额:8,费率:0.25,金额:4,费率:0.2]
多亏了martin r,第二个例子可以被简化为:
let arr3: [(Int, Float)] = [(2, 0.04), (5, 0.07), (1, 0.1), (4, 0.035), (8, 0.25), (4, 0.2)]
let bankRateArr3 = arr3.map(BankRate.init)
print(bankRateArr3)

关于arrays - 使用带有两个参数的函数映射数组-Swift,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47840364/

10-14 06:25