تدفع شركة Insure Everyone رواتب موظفيها بعملات أجنبية، ولكن بسبب متطلبات تشريعية يجب تحويل الراتب إلى العملة المحلية. ويقع موظفو الشركة في أنحاء مختلفة من العالم.
يبحث قسم الموارد البشرية في Insure Everyone عن مطوّر موهوب لبناء برنامج يحوّل راتب كل موظف إلى عملته المحلية المقابلة. وتعتمد Insure Everyone على أسعار صرف يوفّرها API خارجي.
بالاستناد إلى API أسعار الصرف الخارجي، عليك كتابة دالة تأخذ source currency وsalary (بعملة المصدر) وlocal currency الخاصة بالموظف، وتُرجع الراتب بالعملة المحلية.
فيما يلي رد API صرف العملات الخارجي:
ملاحظة: اخُتصرت قيم
ratesلإبقاء نص المسألة قصيرًا
{
"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,
}
}
مثال على طلب للحصول على أسعار الصرف مقابل USD:
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 وtargetCurrency هما رموز العملات وفق ISO (الأبجدية). وقد تحتوي مدخلات الاختبار على رموز عملات غير صالحة.5 منازل عشرية.عليك كتابة الكود داخل الدالة التالية.
# 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، أو بكتابة اختبارات وحدة وتشغيلها عبر bal test. وستبدأ خدمة الخلفية تلقائيًا على http://localhost:8080
بافتراض أن صرف العملات الخارجي أرجع رد أسعار التحويل التالي (مختصر):
{
"base": "USD",
"rates": {
// omitted
"GBP": 0.73584,
// omitted
}
}
يجب أن تُرجع الدالة 735.84000
بافتراض أن صرف العملات الخارجي أرجع رد أسعار التحويل التالي (مختصر):
{
"base": "GBP",
"rates": {
// omitted
"USD": 1.35898,
// omitted
}
}
يجب أن تُرجع الدالة 1358.9800
سجّل في Exercism لتتعلّم وتتقن Ballerina عبر 60 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.