Информация об изменениях

Сообщение Re[2]: Context Receivers от 11.05.2022 12:12

Изменено 11.05.2022 12:14 ·

Re[2]: Context Receivers
Здравствуйте, kov_serg, Вы писали:

_>Теперь можно писать так:

_>    with( ModuleArithmetic(13) ) {
_>        var z=a+b
_>        println("z=${z.v}")
_>    }
_>    with( SaturationArithmetic(0,10) ) {
_>        var z=a+b
_>        println("z=${z.v}")
_>    }    
_>}

Т.е. по сути синтаксический сахар для
{
  var ctx = new ModuleArithmetic(13);
  var z = ma.plus(a, b);
  println("z=${z.v}")
}
{
  var ctx = new SaturationArithmetic(0,10);
  var z = ctx.plus(a, b);
  println("z=${z.v}")
}

И всё? Ну нафиг такое счастье. Даже по строчкам ровно столько же.

Видео не смортел. Вопрос возник — как это будет работать в случае вызовов методов внутри with? Контекст неявно передаётся? А если вызовы асинхронные, в других тредах?
Re[2]: Context Receivers
Здравствуйте, kov_serg, Вы писали:

_>Теперь можно писать так:

_>    with( ModuleArithmetic(13) ) {
_>        var z=a+b
_>        println("z=${z.v}")
_>    }
_>    with( SaturationArithmetic(0,10) ) {
_>        var z=a+b
_>        println("z=${z.v}")
_>    }    
_>}

Т.е. по сути синтаксический сахар для
{
  var ctx = new ModuleArithmetic(13);
  var z = ctx.plus(a, b);
  println("z=${z.v}")
}
{
  var ctx = new SaturationArithmetic(0,10);
  var z = ctx.plus(a, b);
  println("z=${z.v}")
}

И всё? Ну нафиг такое счастье. Даже по строчкам ровно столько же.

Видео не смортел. Вопрос возник — как это будет работать в случае вызовов методов внутри with? Контекст неявно передаётся? А если вызовы асинхронные, в других тредах?