Ссылочный член класса по строке и / или перечислению - PullRequest
0 голосов
/ 25 сентября 2018

Не уверен, правильно ли я задаю этот вопрос или нет.Но в основном я хочу сослаться на член класса с помощью строкового значения и / или перечисления

Например, у меня есть следующее.

var total:Int = 0
if locale.currencyCode == "JPY" {
    for item in Cart.items {
        total += item.fabric.price.JPY * item.quantity
    }
}else{
    for item in Cart.items {
        total += item.fabric.price.USD * item.quantity
    }
}
subtotalAmountLabel.text = "\(total.formatMoney())"

Но я хотел бы написать что-товместо этого:

var total:Int = 0
for item in Cart.items {
    total += item.fabric.price[locale.currencyCode]* item.quantity
}
subtotalAmountLabel.text = "\(total.formatMoney())"

Есть ли способ сделать это?

1 Ответ

0 голосов
/ 25 сентября 2018

Вместо этого вы должны использовать словарь.

// this should be the declaration of item.fabric.price
let prices = [
    "JPY": <some price>,
    "USD": <some price>,
    // and so on
]

Тогда вы можете использовать строку для доступа к нему:

if let price = item.fabric.prices[locale.currencyCode] {
    // ...
} else {
    // If execution ever reaches here, that means there is no price available in that currency.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...