IMHO, it is enough to have comparison of main use cases for a certain business area. For our company the most important features are:
- hight level data manipulation scala win because of collection(high priority), implicit(questionable priority in kotlin), operator overloading and value calsses (questionable priority in kotlin)
for (ropDet <- Stk_WarrantOutDetApi().byParent(rop)) {
val roaDet = ropDet.copyAro()
val idvWarrantDet = roaDet.id
var nvCostBaseSum = roaDet.nCostBase
var nvQtyGetBaseSum = roaDet.nQtyGetBase
var idavDetItem = new ListBuffer[NLong]()
var navPrimeSum = new ListBuffer[NNumber]()
if (bvDetItemTypeExists === 1.nn) {
val rvaWarrantDetItem = (for (rp <- Stk_WarrantOutDetItemApi().byParent(ropDet))
yield rp).toSeq.sortBy(_ :> { aro => aro.nQtyGetBase })
for (ropDetItem <- rvaWarrantDetItem) {
val roaDetItem = ropDetItem.copyAro()
val nvCostBase = (nvCostBaseSum / nvQtyGetBaseSum * roaDetItem.nQtyGetBase).round(2.nn)
nvCostBaseSum -= nvCostBase
nvQtyGetBaseSum -= roaDetItem.nQtyGetBase
//Š·Š°ŠæŠ¾Š»Š½ŠµŠ½ŠøŠµ ŠŗŠ¾Š»Š»ŠµŠŗŃŠøŠ¹
idavDetItem += roaDetItem.id
navPrimeSum += nvCostBase
}
//Š”Š¾Š·Š“Š°Š½ŠøŠµ Š¾ŠæŠµŃŠ°ŃŠøŠ¹ Š¾Ń Š“ŠµŃŠ°Š»ŠøŠ·Š°ŃŠøŠ¹
Stk_WarrantOutDetItemApi().insertOperationByWarrantDetItem(idavDetItem.toList, idvWarrantDet, navPrimeSum.toList)
} else idavDet += idvWarrantDet
}
- string intorpolation(java loses)
- jdbc intergration(scala loses)
- named arguments(java loses)
All other features do not influence to performance of programmers significantly in comparison to other languages.