私はscalaを使い慣れていないので、デフォルト以外の値で初期化するためには、たった数個の変数(時にはnone)しか必要としないクラスがあります。最初はビルダークラスを使用してこれを行いましたが、その後、コンストラクターでスカラーのデフォルト値を使用する方が優れていることに気付きました。問題は、それはかなりひどい見えますが、それは上で一意の名前の要件を満たすように、デフォルト値のいくつかは、Scala:単純でないデフォルト値の使い方
val name: String = "Party-" + LocalDateTime.now.atZone(ZoneId.systemDefault()).toEpochSecond
オクラホマのように、もう少し複雑なString = "name"
またはInt = 1
などよりますと、実際のコードを必要とすることですその変数とそれが動作します。
private val now: LocalDateTime = LocalDateTime.now()
private val dateFormat: DateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd")
private var startDate = dateFormat.format(now)
private var startHour = now.getHour
をだから、明らかに私は、デフォルト値として、すべてのそのコードを使用することはできません、フォーマットされた日付とデフォルト値が今日からにする必要がある満たす何かを必要と
私は他の変数を持っています
これらの変数には、以前に初期化された変数を共有するために1行を使用することはできません。startDate
ありがとうございます!
あなたの質問は不明です。 「明らかに、すべてのコードを 'startDate'のデフォルト値として使うことはできませんが、これについては何も明白ではありません。私はこれが宿題であると推測しています。変数を初期化するために複合式を使用することが許可されていないという制約がいくつかあります。またはあなたの会社のスタイルのガイドはそれを禁じますか?いずれにしても、それらの制限は、決して「明白」ではないため、*正確に*これらの制限が何であるかを質問する*必要があります。 –
十分に公正で、私は私の質問を更新しました。もちろん、私は上記のように別の変数を使用して複合式を使用することは可能ですが、それを行うより良い方法があるように感じるのは、私ができなければビルダーを使用しなければならないからです。 1つの変数の –