Size: a a a

2021 May 25

Тᅠ

Туночка ᅠᅠ... in dlang.ru
а в ди есть что то похожее на ?
with ... : 
   ...
источник

DH

Dark Hole in dlang.ru
Питоновский?
источник

DH

Dark Hole in dlang.ru
Или JS?
источник

DH

Dark Hole in dlang.ru
Если питоновский, то можно создать структуру и навесить на деструктор логику
источник

DH

Dark Hole in dlang.ru
Типа так:
{
auto f = MyStruct();
}
источник

DH

Dark Hole in dlang.ru
При выходе из скопа она задестроится
источник

OB

Oleg B in dlang.ru
есть прям with
import std;

struct Foo
{
   int num;
   string str;
}

void main()
{
   Foo foo;
   
   with (foo)
   {
       str = "ok";
       num = 42;
   }
   
   writeln(foo); // Foo(42, "ok")
}
источник

DH

Dark Hole in dlang.ru
Это на манер js
источник

DH

Dark Hole in dlang.ru
Но я не видел норм кода с таким with
источник

OB

Oleg B in dlang.ru
тов @Tynuk видимо пока не подрос и плохо умеет излагать свои мысли, мне по 8 точкам в разных направлениях сложно понять что конкретно он хочет узнать)
источник

DH

Dark Hole in dlang.ru
На манер питона
источник

DH

Dark Hole in dlang.ru
Где есть with создаёт отдельный скоп
источник

OB

Oleg B in dlang.ru
почему бы тогда не написать про это?))
источник

OB

Oleg B in dlang.ru
знаю
источник

OB

Oleg B in dlang.ru
но не совсем скоп
источник

OB

Oleg B in dlang.ru
именно конструкция специальная, при выходе из которой доп код исполняется
источник

OB

Oleg B in dlang.ru
так то в питоне код при выходе из скопов просто так не исполняется
источник

DH

Dark Hole in dlang.ru
И при входе
источник

OB

Oleg B in dlang.ru
ну и при входе
источник

OB

Oleg B in dlang.ru
import std;

struct Foo
{
   static Foo open()
   {
       stderr.writeln("open");
       return Foo.init;
   }
   
   ~this() { stderr.writeln("close"); }
}

void main()
{
   stderr.writeln("0");
   with (Foo.open())
   {
       stderr.writeln("1");
   }
   stderr.writeln("2");
}


выводит
0
open
1
close
2
источник