プログラミングに詳しい人きてください

未分類
1:なんJゴッドがお送りします2022/11/22(火) ID:Wzw8hYaj0

Enterキーを押すと処理Aが実行される
処理Aは変数xを使って行われる
処理A実行中にEnterキーを押すと、変数xが2処理内で使われて挙動がバグる
同時までとは言わないが、処理A中に処理Aを実行する方法はないか
無名変数とかあればいいんだけど
詳しい人いる?



2:なんJゴッドがお送りします2022/11/22(火) ID:Ajnu5hF00

処理実行中か管理すればいんではないの


3:なんJゴッドがお送りします2022/11/22(火) ID:Wzw8hYaj0

>>2
すごく簡単に言うと、xに代わるその時に実行された処理用の変数が欲しいんだ
xを関数ごとに定義出来ればバグらないと思う


4:なんJゴッドがお送りします2022/11/22(火) ID:lBSBlc370

言語は


6:なんJゴッドがお送りします2022/11/22(火) ID:Wzw8hYaj0

>>4
Pythonです

なんとなく、処理Aの、
def A(): ←ここになんか入れたらいい気がする


5:なんJゴッドがお送りします2022/11/22(火) ID:TQlcCCIk0

言語何?
インタプリタ系?


7:なんJゴッドがお送りします2022/11/22(火) ID:JkPiPbWR0

コーディングできない人だけど
レーザープリンターとかのキューの処理みたいに処置を記憶されておいて順次処理させていくのは?


8:なんJゴッドがお送りします2022/11/22(火) ID:Wzw8hYaj0

>>7
順次じゃダメなんだ…
処理A中に処理Aを実行したい


9:なんJゴッドがお送りします2022/11/22(火) ID:Wzw8hYaj0

使い捨て変数とかないかしら
ちなみになんだけど、変数xは他の処理では全く使わない
あくまでも処理Aを行うための変数


10:なんJゴッドがお送りします2022/11/22(火) ID:Wzw8hYaj0

処理Aで無名変数を定義してそれをxとして使ってリストに格納して、カウンターでインデックス指定して取り出して使う方法も考えた
でもそれだと結局カウンター用の変数が2処理内で使われてバグる


11:なんJゴッドがお送りします2022/11/22(火) ID:JjgZNzpX0

処理Aの最初に現在の時刻などを取得してそれを変数名にする(今xとしているもの)


21:なんJゴッドがお送りします2022/11/22(火) ID:lBSBlc370

id(x)が呼び出しごとに変わらないからバグってるんだよな
思いつく範囲だと辞書を用意しておいて >>11 かなあ


13:なんJゴッドがお送りします2022/11/22(火) ID:QMxd4MQwd

そもそもなんでバグるのかが分からん
xを書き換えてるのか???
xはどこで定義してるのか


14:なんJゴッドがお送りします2022/11/22(火) ID:4ifBMLHnr

xが二ヶ所で更新しあってバグるってこと?
変数増やしちゃあかんの?


15:なんJゴッドがお送りします2022/11/22(火) ID:pjf5RZTu0

再入可能とは違うの


16:なんJゴッドがお送りします2022/11/22(火) ID:TQlcCCIk0

X書き換えなかったら大丈夫だと思うけどPythonのクソ仕様とかあるからわからんね
int Hoge(int X)
{
int Y=X+3
return Y
};
とかでいけないか?


17:なんJゴッドがお送りします2022/11/22(火) ID:TQlcCCIk0

Pythonとかなら型が動的だから最初に実行したときは型推論うまくいったけど2回目やるときは変な型になって処理ができんくなったとか?
型指定できるらしいからやってみてもう一度試してみたら?


19:なんJゴッドがお送りします2022/11/22(火) ID:gW/hZI38a

愚直だけどグローバルでA実行中フラグを宣言して
A処理開始したらそれをtrueにして
A処理全体をifで囲んでA実行フラグがfalseじゃないと実行できないようにする
A処理終わったらfalseにすればA処理を並列で走らせられなくなる


23:なんJゴッドがお送りします2022/11/22(火) ID:QMxd4MQwd

引数が変わるだけなら即時関数とか高階関数で行けるかもしれない


25:なんJゴッドがお送りします2022/11/22(火) ID:JjgZNzpX0

xをexec()などを使って動的な変数にする


26:なんJゴッドがお送りします2022/11/22(火) ID:m5fGLBHEa

x=1
class A
def B(event=None):
処理B
A.B()
def C(event=None):
処理C
A.C()
def D(event=None):
処理D
簡略化するとこんな感じ
処理B~D全てでxに別値を代入する
処理C中に処理Bを実行すると処理Bで処理Cにおけるxが使われてバグるということです



30:なんJゴッドがお送りします2022/11/22(火) ID:JjgZNzpX0

>>26
xをリストにして処理Bが実行されるたびにインデックスを1ずつ増やし、x[0]に代入、x[1]に代入、x[2]に代入…
ってされるようにするとか?


27:なんJゴッドがお送りします2022/11/22(火) ID:QMxd4MQwd

値で渡せばいい


28:なんJゴッドがお送りします2022/11/22(火) ID:m5fGLBHEa

ちょっとレス見かえす


31:なんJゴッドがお送りします2022/11/22(火) ID:VlA/iA0A0

変数Y作ればよくね?
Xのみじゃないとなんか不具合あんの?


39:なんJゴッドがお送りします2022/11/22(火) ID:m5fGLBHEa

>>31
カウンターとして使うんだ
仕事絡むから詳しくは言えないけど、処理Cは0.1秒で1回、計10回実行する必要がある
だから訳あってfor文では早すぎて代用できないんだ…


32:なんJゴッドがお送りします2022/11/22(火) 

よく分からんけどローカル変数なら呼び出されるごとに作られるから関係ないやろ
ローカル変数じゃないならすまん


33:なんJゴッドがお送りします2022/11/22(火) ID:JjgZNzpX0

>>32
ん?確かにそうかも


34:なんJゴッドがお送りします2022/11/22(火) ID:lBSBlc370

一応ラムダ式使えばどうにかなりそうなことは確認した


35:なんJゴッドがお送りします2022/11/22(火) ID:lBSBlc370

def A(a):
f = lambda x:print(id(x))
f(a)
A(1) # 2639232198960
A(2) # 2639232198992


36:なんJゴッドがお送りします2022/11/22(火) ID:lBSBlc370

いやこれ引数自体が違うからか
忘れてください


38:なんJゴッドがお送りします2022/11/22(火) ID:2RfGVR26a

いくらでもやり方ありそうなんだが…


41:なんJゴッドがお送りします2022/11/22(火) ID:m5fGLBHEa

そんなつもりはなかったんだが、後付け訂正たくさんでごめん
x=1
class A
def B(event=None):
処理B
A.C()
def C(event=None):
処理C
A.D() #10回実行後
def D(event=None):
処理D
return


43:なんJゴッドがお送りします2022/11/22(火) ID:lBSBlc370

xは処理B,C,Dの実行回数(同時に実行される可能性もある)を数えるようなものと思っていい?実際は違うかもしれないけど今までの話だと処理としてはそのような物だと認識してる


44:なんJゴッドがお送りします2022/11/22(火) ID:4ifBMLHnr

ワロタ
いくらでもやりかたあるとおもうけどか具体的に何がしたいのか説明されんともう何も言えんわ


52:なんJゴッドがお送りします2022/11/22(火) ID:2RfGVR26a

>>44
それよ
仕事絡むとはいえ仕様が謎すぎる


45:なんJゴッドがお送りします2022/11/22(火) ID:mHTNV3dn0

質問のレベルが低すぎてひくわ
こういう頭のレベルのやつがプログラミングやると害にしかならんのよな


47:なんJゴッドがお送りします2022/11/22(火) ID:VlA/iA0A0

普通にY作ってY=Y+〇〇ってやればいいだけでは?


49:なんJゴッドがお送りします2022/11/22(火) ID:brFbAqDn0

シーケンス図書くとかした方が質問しやすいよ


51:なんJゴッドがお送りします2022/11/22(火) ID:lNiTqcb50

なにこれpython
同じ処理ゲームのマクロ作るのに作った気がするから
後でPC開けたら送ってやるよ




元スレ:https://mi.5ch.net/test/read.cgi/news4vip/1669066134
未分類
なんJゴッド