Metasequoia BBS

| 新規投稿 | 通常表示 | ツリー表示 |
状態
タグ
キーワード
[9553] スクリプトで情報を取得時の書き方について / hosino
対応済み [質問,スクリプト] 返信
いつもお世話になっております。
スクリプトの書き方について疑問があったため、初めて書き込ませていただきます。

参考用にmetasequoia同封のスクリプトのコードを確認していたのですが、
例えば、全てのオブジェクト情報を取得する繰り返し処理の際に、

doc = MQSystem.getDocument()
for obj in doc.object:

といったような書き方ではなく、

doc = MQSystem.getDocument()
for o in range(0,doc.numObject):
    obj = doc.object[o]

といったような書き方をしているものがあるのは、何か理由があるのでしょうか?

上の書き方をすると何か問題があるということであれば、知っておきたいと思い質問させていただきました。

もしわかる方がいれば、よろしければご教授いただけますと幸いです。
よろしくお願いいたします。
2022-09-29 05:53
[9554] Re: スクリプトで情報を取得時の書き方について / 管理者
前者の場合、インデックスがないため、インデックスを指定する関数を使用することができません。
ならenumerate()も使えばいいのではと思うかもしれませんが、長いPythonの歴史の中でenumerate()は当初からのものではなく、後付けで追加された組み込み関数です。

Metasequoiaではenumerate()がサポートされるよりも前からPythonをサポートしており、その当時は後者の書き方をするしかなかったので、サンプルもそのままになっているということです。
もう一つ、C言語(not C++1x)に慣れていると後者のほうが馴染みやすいという側面もあります。

いずれにしても歴史的背景によるものなので、現代においてはどちらでも好きなほうの書き方を使えばそれで構いません。
2022-09-29 10:53
[9555] Re: スクリプトで情報を取得時の書き方について / hosino
現代においてはどちらでも構わないとのことで安心しました。
自分の書きやすい方で書こうと思います。

背景についてもお聞きできたことで「どうしてそう書かれているのか」の部分を理解することができ納得がいきました。
丁寧にご説明いただきありがとうございました。 
2022-09-29 18:19