Какова обычная практика инициализации записи значениями по умолчанию, если они не указаны явно?
Чтобы проиллюстрировать мой вопрос, возьмите этот код Python:
class Encoder:
def __init__ (self, minLength = 1, maxLength = 258, maxDistance = 32768):
self.__minLength = minLength
self.__maxLength = maxLength
self.__maxDistance = maxDistance
self.__window = []
self.__buffer = []
Теперь я пытаюсь сделать то же самое в эрланге, то есть создать запись с перезаписываемыми значениями по умолчанию. Мое решение пока следующее:
-record (encoder, {minLength, maxLength, maxDistance, window = [], buffer = [] } ).
init (Options) ->
case lists:keyfind (minLength, 1, Options) of
false -> MinLength = 3;
{minLength, MinLength} -> pass
end,
case lists:keyfind (maxLength, 1, Options) of
false -> MaxLength = 258;
{maxLength, MaxLength} -> pass
end,
case lists:keyfind (maxDistance, 1, Options) of
false -> MaxDistance = 32768;
{maxDistance, MaxDistance} -> pass
end,
#encoder {minLength = MinLength,
maxLength = MaxLength,
maxDistance = MaxDistance}.
Это, ну, неуклюжий.
Мои вопросы:
- Есть ли какая-то языковая конструкция или синтаксический сахар, который спасает меня весь этот код?
- Какая обычная практика для достижения этой цели?
- Какую обычную практику использовать вместо моего атома
pass
, который я явно украл у питона?