|
|
|
Передать в аннонимную функцию - статичную переменную
|
|||
|---|---|---|---|
|
#18+
Возможно ли такое сделать? Требуется назначить несколько обработчиков,которые будут вызываться по мере необходимости, и каждый обработчик должен иметь идентификатор, для возможности работы и индивидуально Данная мысль пришла, когда появилось узкое место, ибо в дырке для всех, нужно было искать того самого парня. И задача встала, неверной дырке дать, постоянного парня (статичного) Сделав дырку, верной, и благородной с. Пример кода, тут за пример взят тип string, но в будущем это может быть адрес на выделенную структуру Код: 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. Пример кода на другом языке, который такое может http://sandbox.onlinephpfunctions.com/code/8d18b88ebae45444bc0c7e655142e21391b361f6 Результат Код: sql 1. 2. 3. 4. 5. Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2018, 12:38 |
|
||
|
Передать в аннонимную функцию - статичную переменную
|
|||
|---|---|---|---|
|
#18+
Димoнасик, авторПередать в аннонимную функцию - статичную переменную Так всё и передалось. результат получился равный последнему значению переменной, то есть 5. Вроде всё максимально прозрачно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2018, 13:26 |
|
||
|
Передать в аннонимную функцию - статичную переменную
|
|||
|---|---|---|---|
|
#18+
makhaon, Статичную не на стороне внешнего кода, а внутреннего - для анонимной функции. Каждый вызов функции, содержит свою статичную переменную, со своим значением, НЕ Равным, последнему значению в локале Я как понимаю ещё, он в добавок кэширует анонимные функции, для чего то. Хотя правильнее было бы создавать новую ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2018, 13:33 |
|
||
|
Передать в аннонимную функцию - статичную переменную
|
|||
|---|---|---|---|
|
#18+
Димoнасикmakhaon, Статичную не на стороне внешнего кода, а внутреннего - для анонимной функции. Каждый вызов функции, содержит свою статичную переменную, со своим значением, НЕ Равным, последнему значению в локале Я как понимаю ещё, он в добавок кэширует анонимные функции, для чего то. Хотя правильнее было бы создавать новую прямого доступа к внутренним переменным функции снаружи нет и быть не может ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2018, 13:36 |
|
||
|
Передать в аннонимную функцию - статичную переменную
|
|||
|---|---|---|---|
|
#18+
defecator, Почему не может? Или правильнее сказать, не умеет? Это обычный static , из с++ к примеру ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2018, 13:38 |
|
||
|
Передать в аннонимную функцию - статичную переменную
|
|||
|---|---|---|---|
|
#18+
Димoнасикdefecator, Почему не может? Или правильнее сказать, не умеет? Это обычный static , из с++ к примеру потому что внутренние переменные функции - это дело только самой функции и того кода, который в ней находится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2018, 13:39 |
|
||
|
Передать в аннонимную функцию - статичную переменную
|
|||
|---|---|---|---|
|
#18+
ДимoнасикЯ как понимаю ещё, он в добавок кэширует анонимные функции, для чего то. Хотя правильнее было бы создавать новую Он не кеширует функции, он захватывает 1 переменную в 5 разных функций. Сравни с этим: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2018, 15:22 |
|
||
|
Передать в аннонимную функцию - статичную переменную
|
|||
|---|---|---|---|
|
#18+
AX-Class, А можно как нибудь изменить через asm код внутреннее представления какой нибудь переменной ? Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Наверное это возможно, но я не понимаю как каким будет адрес Есть ещё вариант попробовать внутри функции создать const переменную, и её как нибудь ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2018, 15:47 |
|
||
|
Передать в аннонимную функцию - статичную переменную
|
|||
|---|---|---|---|
|
#18+
AX-ClassОн не кеширует функции, он захватывает 1 переменную в 5 разных функций. Неправда. Откуда там 5-ти функциям взяться. Одна функция, а точнее ссылка на интерфейс 5 раз копируется в список. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2018, 17:43 |
|
||
|
Передать в аннонимную функцию - статичную переменную
|
|||
|---|---|---|---|
|
#18+
ДимoнасикА можно как нибудь изменить через asm код внутреннее представления какой нибудь переменной ? В asm внутренних переменных нет. Захваченные переменные анонимных функций можно менять. Только нужно ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2018, 17:50 |
|
||
|
Передать в аннонимную функцию - статичную переменную
|
|||
|---|---|---|---|
|
#18+
В ассемблере можно сделать что угодно. Даже такие странные вещи. Пока что главный вопрос остался за кадром: цель? Зачем делать заведомо плохо, если можно сделать заведомо хорошо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2018, 19:38 |
|
||
|
Передать в аннонимную функцию - статичную переменную
|
|||
|---|---|---|---|
|
#18+
makhaon, Цель была убрать из функции поиск по базе. Сразу дать нужный адрес в анонимную функцию. Жертвуя ОЗУ, а не ПЗУ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2018, 19:46 |
|
||
|
Передать в аннонимную функцию - статичную переменную
|
|||
|---|---|---|---|
|
#18+
Димoнасик, Ну как вариант: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2018, 21:47 |
|
||
|
Передать в аннонимную функцию - статичную переменную
|
|||
|---|---|---|---|
|
#18+
alekcvpДимoнасик, Ну как вариант: Код: 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. чёртовы извращенцы. после таких код переписывать сущий ад ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2018, 00:44 |
|
||
|
Передать в аннонимную функцию - статичную переменную
|
|||
|---|---|---|---|
|
#18+
defecatorчёртовы извращенцы. после таких код переписывать сущий ад Заметь: я просто точно следую исходному ТЗ и никакой лишней отсебятины... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2018, 01:35 |
|
||
|
Передать в аннонимную функцию - статичную переменную
|
|||
|---|---|---|---|
|
#18+
defecatoralekcvpДимoнасик, Ну как вариант: Код: 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. чёртовы извращенцы. после таких код переписывать сущий ад Работает же -- смысл повторно в этой куче мараться и ковыряться ?Оставить там коментарий о тяжолом наследии, указать оригинальное авторсво и забыть как страшный сон - тебе ли не знать первый пунтк инструкции? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2018, 07:24 |
|
||
|
Передать в аннонимную функцию - статичную переменную
|
|||
|---|---|---|---|
|
#18+
В Delphi замыкания захватываются по ссылке, а не по значению.. Поэтому в 5 случаях будет захвачена по сути одна переменная. Подробнее можно прочитать тут : Вариант с вынесением кода во внешнюю функцию от AX-Class единственный нормальный. т.к. там по сути пришедшая со стека переменная будет на каждую итерацию по новому адресу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2018, 11:24 |
|
||
|
|

start [/forum/topic.php?fid=58&gotonew=1&tid=2040813]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
167ms |
get topic data: |
10ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 277ms |
| total: | 547ms |

| 0 / 0 |
