[過去ログ] スレ立てるまでもない質問はここで 165匹目 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
416
(1): デフォルトの名無しさん (ワッチョイ 87ba-h2t9) [sage] 2024/01/25(木) 20:50:40.72 ID:v9qGXmXI0(1) AAS
>>415
415(1): デフォルトの名無しさん (ワッチョイ 5f02-l3dD) [sage] 2024/01/25(木) 20:32:21.74 ID:eMxFxiwX0(1) AAS
あるクラスにインスタンス変数が10個あります
コンストラクタでインスタンス変数が固定値を基に初期化されて、インスタンス化していろんな処理で弄った後で
そのうち6個を初期値(コンストラクタで初期化したのと同じ値)に戻したいです

最初は戻し用のクラス関数に固定値を用意してインスタンス変数に与えていましたが
この方法だと修正箇所がコンストラクタとクラス関数の二か所になるので面倒なので
素人なりに考えた解決方法は2つです

1つ目は、戻し用のクラス変数を用意して、それを基に戻します
この方法だと、ほぼ同じ名前の変数が最大2倍に並んで辛い気がします

2つ目は、戻し用のインスタンスを作って、それのインスタンス変数の値を基に戻します
この方法だと、必ず1つ余計なインスタンスが作られて無駄に感じます

どちらにするかは決めかねています
これまでは戻す必要がない変数はコンストラクタに当たる関数で初期化し
戻す必要がある変数はコンストラクタと戻し用関数を兼ねた関数で初期化+戻していました

クラスを使うのは初めてなので、こういうことをやりたい時に標準的な方法が知りたいのですが
ググっても「インスタンス化時に初期化するならコンストラクタを使え」という記事しかでてきません
インスタンス化後に初期化する一般的な方法を教えてください
初期値にする(インスタンス)メソッドをつくる
コンストラクタ内からメソッド呼べる言語ならそうする
出来ないならインスタンス化直後に初期化メソッドを呼ぶ作法にする
勝手なルールだけど常套句なので違和感はない
467: デフォルトの名無しさん (ワッチョイ 1202-turO) [sage] 2024/02/17(土) 21:51:44.79 ID:l/bCed9m0(1) AAS
>>416>>417
417(1): デフォルトの名無しさん (ワッチョイ 5f34-1uGC) [sage] 2024/01/25(木) 21:38:37.41 ID:9dqzP6co0(1) AAS
もし戻したい6個に論理的なまとまりがあるならそれを内部クラスに切り出してクラス単位で状態を保持する
リセットしたくなったら内部クラスのインスタンスごと作り直す
遅レスですが、ありがとうございます
コンストラクタからメソッド呼び出しできました、また6個中5個をまとめることが可能でした
今までのやり方に縛られて視界が狭くなってたので、どの方法が自分に合うか試しながら進めてみます
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.045s