Я думаю, что тест неверен. Вот упрощенный пример:
declare @tblVehicleRegistration table (RegistrationNumber varchar(5))
insert into @tblVehicleRegistration(RegistrationNumber) VALUES('AB012')
SELECT * FROM @tblVehicleRegistration WHERE RegistrationNumber = 20012 --Fails as expected
SELECT * FROM @tblVehicleRegistration WHERE RegistrationNumber = '20012' --works as expected
Это должно подавить предупреждение, не будучи сбивающим с толку:
max(Element,[_Head | Tail]) ->
max(Element, Tail);
Если Вы называете переменную _
вместо Name
(например. _
вместо Head
) переменная не будет связана, и Вы не получите предупреждение.
Если Вы называете переменную _Name
вместо Name
(например. _Head
вместо Head
) переменная будет связана, но Вы все еще не получите предупреждение. Ссылка на переменное начало _
в коде считается очень плохой практикой.
Рекомендуется сохранить название переменной для улучшения удобочитаемости кода (например, легче предположить что _Head
был предназначен для, чем просто _
).
max([Head|Tail]) ->
max(Head,Tail).
max(Element,[Head | Tail]) when Element < Head ->
max(Head,Tail);
max(Element,[_| Tail]) ->
max(Element, Tail);
max(Element,[]) ->
Element.
Должен добиться цели. Так как причиной является та замена 'Голова' с '_', синтаксис для того, чтобы сказать, что параметр будет помещен туда, но мне не нужен он.