2
除非明確指定,否則用默認值初始化記錄的常用做法是什麼?使用默認值初始化記錄
爲了說明我的問題藉此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
,我明顯偷了蟒蛇?
你的意思是問:「我該如何構建一個記錄使用默認值?」,或者「我該如何構建具有默認值的記錄因爲我有一個現有的名單/目錄嗎?「? –
@大衛後者。 – Hyperboreus
明白了。在一個不相關的說明中,作爲一種風格問題,常見的做法是在原子中使用下劃線 - 例如min_length而不是minLength。 –