powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Зануление переменных
17 сообщений из 17, страница 1 из 1
Зануление переменных
    #39773808
grinn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые специалисты.
В проекте сталкиваюсь с таким кодом:
Код: plsql
1.
2.
l_var_date   := NULL;
l_var_date   := l_date_status_changed + validity_duration;


Имеет ли смысл занулять переменные перед использованием?
...
Рейтинг: 0 / 0
Зануление переменных
    #39773816
grinn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Или перед повторным использованием..
...
Рейтинг: 0 / 0
Зануление переменных
    #39773829
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grinn,

Смысла нет, но результат может быть разным.
...
Рейтинг: 0 / 0
Зануление переменных
    #39773834
grinn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поясните, пожалуйста, в каких случаях?
...
Рейтинг: 0 / 0
Зануление переменных
    #39773837
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grinnв каких случаях?Очевидно же. Результирующие значения будет отличаться, когда предизменение переменной влияет на результат присваемого выражения.
...
Рейтинг: 0 / 0
Зануление переменных
    #39773842
grinn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если Вы имеете в виду
Код: plsql
1.
2.
l_var_date   := NULL;
l_var_date   := l_var_date + l_date_status_changed + validity_duration;


то это само собой.
Я имею в виду ситуацию, когда переменная не участвует в вычислении своего значения.
То есть, зануление переменной не имеет смысла? ОК, спасибо!
...
Рейтинг: 0 / 0
Зануление переменных
    #39773850
brzl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это индус-код.
За строчку кода платят бабки
...
Рейтинг: 0 / 0
Зануление переменных
    #39773851
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
brzlЭто индус-код.
За строчку кода платят бабки

В теории да, но мы живем в реальном мире.

Инициализация переменных, позволяет отслеживать использование неинициализированных переменных. Ну или по крайней мере получать однозначную ошибку :)
...
Рейтинг: 0 / 0
Зануление переменных
    #39773852
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grinnпеременная не участвует в вычислении своего значения1. Из приведенных фрагментов этого не следует. Переменная может участвовать в результате неявно.
2. Присвоение null литералом может в принципе препятствовать plsql-компиляции и этот "результат" отличается от без присвоения.
...
Рейтинг: 0 / 0
Зануление переменных
    #39773935
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grinn,

Предполагаю, что зануление может иметь смысл (в зависимости от остального кода, конечно), если на второй строчке может вылететь исключение и тогда в неинициализированной переменной останется мусор
...
Рейтинг: 0 / 0
Зануление переменных
    #39773988
-gt-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кроик Семёнgrinn,

Предполагаю, что зануление может иметь смысл (в зависимости от остального кода, конечно), если на второй строчке может вылететь исключение и тогда в неинициализированной переменной останется мусор
https://docs.oracle.com/cd/B19306_01/appdev.102/b14261/constantvar_declaration.htm]Constants and variables are initialized every time a block or subprogram is entered. By default, variables are initialized to NULL.
...
Рейтинг: 0 / 0
Зануление переменных
    #39774005
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-gt- https://docs.oracle.com/cd/B19306_01/appdev.102/b14261/constantvar_declaration.htm]Constants and variables are initialized every time a block or subprogram is entered. By default, variables are initialized to NULL.

Ты не ту часть выделил жирным - медитируй над "every time a block or subprogram is entered".

SY.
...
Рейтинг: 0 / 0
Зануление переменных
    #39774077
-gt-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY-gt- https://docs.oracle.com/cd/B19306_01/appdev.102/b14261/constantvar_declaration.htm]Constants and variables are initialized every time a block or subprogram is entered. By default, variables are initialized to NULL.

Ты не ту часть выделил жирным - медитируй над "every time a block or subprogram is entered".

SY.
А над чем тут медитировать?

Хотел донести мысль о том, что в не инициализированной переменной будет null, а не мусор.
То что инициализация переменных будет происходить каждый раз, при входе в plsql блок, была оставлена сознательно. Но как доп. информация, потому что основная мысль про значения, а не про моменты инициализации.
...
Рейтинг: 0 / 0
Зануление переменных
    #39774084
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-gt-Хотел донести мысль о том, что в не инициализированной переменной будет null, а не мусор. Кроик Семён некорректно обозначил предпосылку, но, возможно сам не осознавая, вывод указал верный. Незачем упорствовать насчет null.
...
Рейтинг: 0 / 0
Зануление переменных
    #39774110
-gt-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2--gt-Хотел донести мысль о том, что в не инициализированной переменной будет null, а не мусор.
Согласен, не учел неявную инициализацию. Посыпаю голову пеплом
...
Рейтинг: 0 / 0
Зануление переменных
    #39774126
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-gt-А над чем тут медитировать?


Mы понятия не имеем что есть l_var_date и что есть validity_duration. А l_var_date может быть, напрмер, глобальной переменной пакета a validity_duration функцией ее исользующей.

SY.
...
Рейтинг: 0 / 0
Зануление переменных
    #39774158
-gt-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY-gt-А над чем тут медитировать?


Mы понятия не имеем что есть l_var_date и что есть validity_duration. А l_var_date может быть, напрмер, глобальной переменной пакета a validity_duration функцией ее исользующей.

SY.
Мы действительно не имеет понятия, что есть l_var_date и что есть validity_duration.
Но Ваш пример, с функцией и глобальной пакетной переменной, не подходит. Вы невнимательно читали ветку 21809441
grinnЯ имею в виду ситуацию, когда переменная не участвует в вычислении своего значения.

Хорошим примером был код, который Вы сначала написали, а потом зачем-то стерли(с циклом и вложенным блоком).
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Зануление переменных
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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