Здравствуйте, kov_serg, Вы писали:
_>И почему этого раньше не было.
Теперь можно писать так:
class ModuleArithmetic(val module:Int) { }
class SaturationArithmetic(val low:Int,val high:Int) { }
class Num(val v:Int) {}
context(ModuleArithmetic) operator fun Num.plus(rv:Num):Num {
var r=(v+rv.v)%module
if (r<0) r+=module
return Num(r)
}
context(SaturationArithmetic) operator fun Num.plus(rv:Num):Num {
var r=v+rv.v
if (r<low) r=low
if (r>high) r=high
return Num(r)
}
fun main() {
val a=Num(8)
val b=Num(7)
with( ModuleArithmetic(13) ) {
var z=a+b
println("z=${z.v}")
}
with( SaturationArithmetic(0,10) ) {
var z=a+b
println("z=${z.v}")
}
}
z=2
z=10