Ein Unternehmen namens Insure Everyone bezahlt seine Angestellten in Fremdwährungen. Aufgrund gesetzlicher Vorgaben muss das Gehalt jedoch in die Landeswährung umgerechnet werden. Die Angestellten sind über die ganze Welt verteilt. Die Personalabteilung von Insure Everyone sucht die Unterstützung einer talentierten Entwicklerin oder eines talentierten Entwicklers, um ein Programm zu bauen, das das Gehalt jeder angestellten Person in die entsprechende Landeswährung umrechnet. Insure Everyone verlässt sich dabei auf Wechselkurse, die eine externe API bereitstellt.
Angesichts der externen Wechselkurs-API musst du eine Funktion schreiben, die eine source currency, ein salary (in der Quellwährung) und die local currency der angestellten Person entgegennimmt und das Gehalt in der Landeswährung zurückgibt.
Die Antwort der externen Wechselkurs-API ist unten dargestellt:
Hinweis: Die
ratessind gekürzt, damit diese Problemstellung kurz bleibt
{
"base": "EUR",
"rates": {
"AED": 4.167972,
"AFN": 118.91123,
"ALL": 121.353306,
"AMD": 546.175542,
"ANG": 2.035384,
"AOA": 629.106987,
"ARS": 116.624363,
"AUD": 1.580224,
"AWG": 2.042846,
"AZN": 1.92923,
"BAM": 1.95468,
"BBD": 2.26981,
"BDT": 97.024176,
"BGN": 1.956957,
"BHD": 0.428175,
"BIF": 2257.462616,
"BMD": 1.134504,
"BND": 1.534691,
"BOB": 7.773946,
"BRL": 6.394753,
"BSD": 1.134916,
"BTC": 0.000027,
"BTN": 83.896824,
"BWP": 13.167125,
}
}
Eine Beispielanfrage, um die Wechselkurse für USD abzurufen:
GET http://localhost:8080/rates/USD
{
"base": "USD",
"rates": {
"AED": 3.672477643818380310171368756063197,
"AFN": 104.7748962262571579872079201988508,
"ALL": 106.9266548068103418652047146893925,
"AMD": 481.2454276553169780099231576470961,
"ANG": 1.793414695824643301163693331958788,
"AOA": 554.3178661774696212335484143830275,
"ARS": 102.7598951821316197338845611280433,
"AUD": 1.392364754903645275750470737610812,
"AWG": 1.799989602800547350872880138793802,
"AZN": 1.699880432206294535038121596128717,
"BAM": 1.722304900517304728699178180683942,
"BBD": 1.999971804204874171858658003508614,
"BDT": 85.48980589838411660371074286227852,
"BGN": 1.724311207564226937381544618524109,
"BHD": 0.3772729555625457630971671155965922,
"BIF": 1989.092294529751410010035940827599,
"BMD": 0.9996325735447665520331371082216295
// omitted
}
}
salary <= 10000sourceCurrency und targetCurrency sind ISO-Währungscodes (alphabetisch). Die Testeingabe kann ungültige Währungscodes enthalten.5 Dezimalstellen genau gemessen.Du musst deinen Code in der folgenden Funktion schreiben.
# The exchange rate API base URL
configurable string apiUrl = "http://localhost:8080";
# Convert provided salary to local currency.
#
# + salary - Salary in source currency
# + sourceCurrency - Soruce currency
# + localCurrency - Employee's local currency
# + return - Salary in local currency or error
public function convertSalary(decimal salary, string sourceCurrency, string localCurrency) returns decimal|error {
// TODO: Write your code here
return 0;
}
bal run ausführst, oder Unit-Tests schreiben und sie mit bal test ausführen. Der Backend-Service startet automatisch unter http://localhost:8080
Angenommen, der externe Währungsumtausch hat die folgende Antwort mit Umrechnungskursen zurückgegeben (ausgelassen):
{
"base": "USD",
"rates": {
// omitted
"GBP": 0.73584,
// omitted
}
}
Die Funktion muss 735.84000 zurückgeben
Angenommen, der externe Währungsumtausch hat die folgende Antwort mit Umrechnungskursen zurückgegeben (ausgelassen):
{
"base": "GBP",
"rates": {
// omitted
"USD": 1.35898,
// omitted
}
}
Die Funktion muss 1358.9800 zurückgeben
Melde dich bei Exercism an, um Ballerina mit 60 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.