Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: hrytsea on March 05, 2022, 06:06:58 PM
-
Привет опять!
Является ли данная строка кода:
$x = 5
эквивалентной этому:
define($x)
setvar($x, 5)
Для перестраховки лучше использовать второй вариант или первый ничем не хуже?
Спасибо.
-
даже инт ересно ст ало от чего, Вы желает е
перест раховат ься т аким извращённым способом?
-
даже инт ересно ст ало от чего, Вы желает е
перест раховат ься т аким извращённым способом?
от каких-либо неявных багов, очевидно же
-
Стало ещё более интересно!
Краткий список неявных багов, приведите, ну пожалуйста, пожалуйста! ::)
-
Привет опять!
Является ли данная строка кода:
$x = 5
эквивалентной этому:
define($x)
setvar($x, 5)
Для перестраховки лучше использовать второй вариант или первый ничем не хуже?
Спасибо.
Синтаксис первого перестраховочного оператора:
DEFINE ($var, [value] )
Так что заносите значение сразу в переменную, раз уж хочется пользоваться DEFINE.
А функция SETVAR предназначена для совсем другого, ваша строка setvar($x, 5) скорее всего, выдаст ошибку. Правильно будет setvar("$x", 5). Только вы так не перестрахуетесь, а наоборот, получите, как мне кажется, дополнительные риски поймать какой-нибудь баг.
-
Привет опять!
Является ли данная строка кода:
$x = 5
эквивалентной этому:
define($x)
setvar($x, 5)
Для перестраховки лучше использовать второй вариант или первый ничем не хуже?
Спасибо.
Синтаксис первого перестраховочного оператора:
DEFINE ($var, [value] )
Так что заносите значение сразу в переменную, раз уж хочется пользоваться DEFINE.
(https://ibb.co/ftkFVFc)
в случае существования переменной не сработает.
А функция SETVAR предназначена для совсем другого, ваша строка setvar($x, 5) скорее всего, выдаст ошибку. Правильно будет setvar("$x", 5). Только вы так не перестрахуетесь, а наоборот, получите, как мне кажется, дополнительные риски поймать какой-нибудь баг.
Точно, у меня было с ошибкой.
Убедили, буду пользоваться проверенным "=" :)
-
Из справки про define: Инструкция сработает только если переменная не была объявлена раньше. В противном случае инструкция игнорируется. Если параметр value опущен, переменная инициализируется нулем.
Вообще define нужен только в некоторых случаях, когда нужно присвоить значение переменной единожды, а далее она меняется в процессе работы скрипта.
-
Из справки про define: Инструкция сработает только если переменная не была объявлена раньше. В противном случае инструкция игнорируется. Если параметр value опущен, переменная инициализируется нулем.
Вообще define нужен только в некоторых случаях, когда нужно присвоить значение переменной единожды, а далее она меняется в процессе работы скрипта.
Я для того эту тему создал чтоб понять, насколько в кликермане работает динамическая типизация и объявление переменных. Заметил несколько особенностей:
- аргументы подпрограмм уничтожаются после выполнения подпрограммы (даже глобальные переменные с такими же именами уничтожаются и обнуляются, обойти можно если использовать уникальные имена аргументов для каждой подпрограммы)
- переменные, передаваемые в подпрограммы в качестве аргументов, остаются при этом в порядке (если не имели такого же имени, как и аргумент подпрограммы)
- нет никакой разницы между $x = 5 и define($x), setvar("$x",5)
- а так же, прикольчики типа:
sub(one)
$x = 5
$y = 1
end_sub
sub(two)
$x = 10
$y = "привет"
end_sub
logclear()
logshow(1)
print($x, " ", $y*3) // 0 0
one()
print($x, " ", $y*3) // 5 3
two()
strseparate($y, "и",$res)
print($x, " ", $res[0]) // 10 пр
halt()
Mission accomplished 8)
-
- а так же, прикольчики типа:
А в чём прикольчик? Вроде бы работает так, как написано.
-
- а так же, прикольчики типа:
А в чём прикольчик? Вроде бы работает так, как написано.
я джавист, мне такое странно)
-
Обычная динамическая типизация, как во всех подобных языках.