class CurrencyExchange {
Map<String, double> exchangeRates = {
'USD': 1.0,
'EUR': 0.85,
'JPY': 110.15,
'GBP': 0.72,
'AUD': 1.39,
'CAD': 1.25,
'CHF': 0.92,
'CNY': 6.47,
'HKD': 7.77,
'NZD': 1.41,
};
exchange(double amount, String target) {
if (exchangeRates.keys.contains(target.toUpperCase())) {
// Here i want to access the equivalent value of the above key from Map<String, double> exchangeRates
}
}
}
我写了这行:
var newAmount = amount * (exchangeRates.values * 1.0);
但它给了我这个错误:
未为类型“Iterable
一种解决方案是从地图中获取元素并检查它是否为
null
。这是有效的,因为如果您请求不在地图中的元素, []
运算符将返回 null
:
exchange(double amount, String target) {
double? exchangeRate = exchangeRates[target.toUpperCase()];
if (exchangeRate != null) {
var newAmount = amount * (exchangeRate * 1.0);
}
}
如果您熟悉该语法,您还可以使用模式来组合它:
exchange(double amount, String target) {
if (exchangeRates[target.toUpperCase()] case final exchangeRate?) {
var newAmount = amount * (exchangeRate * 1.0);
}
}