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
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