【发布时间】:2022-01-23 11:20:30
【问题描述】:
func Function(_ currency: Currency, _ amount: Int) -> String {
func unsignInt( amou: Int) -> String {
return String(-amou)
}
let curArray = [
".rub": " ₽;",
".eur": " €;",
".usd": " $;"
]
var amountRes = ""
amount < 0 ? (amountRes = "(" + unsignInt(amou: amount) + ")") : (amountRes = String(amount))
for (curCode, prnCode) in curArray{
if curCode as AnyObject === currency as AnyObject {
return amountRes + prnCode
}
}
return "0"
}
此函数接受货币形式的货币和整数金额。 它应该返回一个包含金额和货币符号的字符串。负数必须显示在括号中且不带减号。 但是这个功能不起作用,帮忙解决一下
【问题讨论】:
-
什么不起作用?
Currency是什么?请添加reproducible example -
您能在此处添加您传递的值吗?
-
为什么将货币字典称为“curArray”?
-
你的 curArray 不是一个数组,而是一个字典,并且强制转换为 AnyObject 是不好的,并且将两个不同类型的对象强制转换为 AnyObject 以比较它们是否是同一个对象(三元组 =)永远不会返回 true。
-
你如何设置 amountRes 不仅仅是丑陋的。 === for AnyObject 只会比较您案例中的引用,那么这应该如何工作? “unsignInt”和“amou”只是糟糕的名字。