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 = []
は今、私が上書きされたデフォルト値を持つレコードを作成する、すなわち、Erlangで同じことをやろうとしています。これまでの私の解決策は以下の通りです:
-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}.
これはまあまあです。
私の質問は以下のとおりです。
- は私にすべてこのコードを保存し、いくつかの言語構造や糖衣構文はありますか?
- これを達成するための一般的な慣行は何ですか?
- 私の原子の代わりに普通の練習は何ですか私は明らかにPythonから盗んだ
pass
?
あなたが尋ねることもしかして:どのように私は、デフォルト値を持つレコードを構築します」「どのように私は、デフォルト値を持つレコードを構築していますか?」、または私は既存のリスト/プロプリストを持っているとしたら? " –
@David後者です。 – Hyperboreus
入手しました。関係のないメモでは、スタイルの問題として、原子の下線を使用するのが一般的な方法です。 minLengthの代わりにmin_length。 –