null
Специально обученный ноль, под который выделено ключевое слово null
.
boolean
function A takes boolean B returns boolean
// local boolean C = null // Ошибка! Нельзя явно присваивать [[[null|]]] переменным с типом [[[boolean|boolean.html]]]
if B == true then
call ConsolePrint("Этот блок не сработает ибо [[[true|true.html]]] это единица")
endif
if B == false then
call ConsolePrint("Этот блок сработает ибо [[[false|false.html]]] это ноль")
endif
if B == null then
call ConsolePrint("Этот блок сработает ибо [[[null|]]] это ноль")
endif
// return null // Ошибка! Нельзя явно указывать [[[null|]]] возвращая [[[boolean|boolean.html]]]
return false
endfunction
function main takes nothing returns nothing
call A(null) // Передавая [[[null|]]] как [[[аргумент|arguments.html]]] он будет превращён в [[[false|false.html]]]
endfunction
integer
function A takes integer B returns integer
// local integer C = null // Ошибка! Нельзя явно присваивать null переменным с типом [[[integer|integer.html]]]
call ConsolePrint([[[I2S|i2s.html]]](B)) // В консоль выведется ноль
if B == 0 then
call ConsolePrint("Этот блок сработает ибо [[[null|]]] приведён к нулю")
endif
if B == null then
call ConsolePrint("Этот блок сработает ибо [[[null|]]] приведён к нулю")
endif
// return null // Ошибка! Нельзя явно указывать [[[null|]]] возвращая [[[integer|integer.html]]]
return 0
endfunction
function main takes nothing returns nothing
call A(null) // Передавая [[[null|]]] как [[[аргумент|arguments.html]]] он будет превращён в ноль
endfunction
real
function A takes real B returns real
// local real C = null // Ошибка! Нельзя явно присваивать null переменным с типом [[[real|real.html]]]
call ConsolePrint(R2S(B)) // В консоль выведется ноль
if B == 0.0 then
call ConsolePrint("Этот блок сработает ибо [[[null|]]] приведён к нулю")
endif
if B == null then
call ConsolePrint("Этот блок сработает ибо [[[null|]]] приведён к нулю")
endif
// return null // Ошибка! Нельзя явно указывать [[[null|]]] возвращая [[[real|real.html]]]
return 0.0
endfunction
function main takes nothing returns nothing
call A(null) // Передавая [[[null|]]] как [[[аргумент|arguments.html]]] он будет превращён в ноль
endfunction
string
Для строк разрешено явное присвоение переменной или возврат из функции
При передаче аргументом будет передан без преобразования
Запрещено явно использовать при конкатенации
function A takes string B returns string
local string C = null // Разрешено явно присваивать [[[null|]]] переменным с типом [[[string|string.html]]]
call ConsolePrint(B + C) // В консоль выведется пустая строка
if B == null then
call ConsolePrint("Этот блок сработает так как передан [[[null|]]]")
endif
if B == "" then
call ConsolePrint("Этот блок не сработает из-за особенностей [[[таблицы строк|string.html#table]]]")
endif
// call ConsolePrint(null + "Ошибка! Нельзя явно использовать [[[null|]]] при конкатенации")
return null // Разрешено явно указывать [[[null|]]] возвращая [[[string|string.html]]]
endfunction
function main takes nothing returns nothing
call A(null) // Передавая [[[null|]]] как [[[аргумент|arguments.html]]] он будет передан как [[[null|]]]
endfunction
handle
function A takes location B returns location
local location C = null // Разрешено явно присваивать [[[null|]]] переменным с типом наследующим [[[handle|handle.html]]]
call ConsolePrint([[[I2S|i2s.html]]](GetHandleId(B))) // В консоль будет выведен ноль, так как объект не создан
if B == null then
call ConsolePrint("Этот блок сработает так как передан [[[null|]]]")
endif
return null // Разрешено явно указывать [[[null|]]] возвращая тип наследующий [[[handle|handle.html]]]
endfunction
function main takes nothing returns nothing
call A(null) // Передавая [[[null|]]] как [[[аргумент|arguments.html]]] он будет передан как [[[null|]]]
endfunction
Last modified: 22 October 2024