2016-09-30 74 views
1

我在Fortran中編寫了一些代碼,但對如何構造更長的代碼沒有真正的信心。使用包含,接口,模塊還是單獨的子例程?

我經常想要assumed-shape arrays。當使用interface blockmodulecontains陳述時,這似乎是可能的。但是,在主代碼外部使用子程序時,如果不使用這些方法中的任何一種,則適用於許多情況,但不適用於assumed-shape arrays

在什麼情況下,這些方法都是首選,哪些是主要區別?

在每種方法中共享/繼承變量的方式是什麼?

+0

你最後一點是一個單獨的問題,在別的地方詢問它。但首先要搜索一下,這裏有關於這個的其他問題。 –

+0

我刪除了最後一個問題。是的,在「重複」中的答案是有幫助的!但是我沒有用我用過的關鍵詞來找到它。 –

+0

某些級別的重複是很好的,因爲它可以幫助人們在不同的措辭中找到他們的答案,所以不用擔心。重點是在這裏複製另一個問題的答案是毫無意義的。 –

回答

1

接口塊是額外的工作。您必須編寫該程序塊並在程序更改時對其進行修改。接口塊適用於諸如使用ISO C綁定工具調用C語言例程的目的。

在主程序的「contains」下有一個子例程有一個缺點,就是所有的局部變量都被繼承了。我認爲程序更加孤立是更好的選擇。

模塊使程序更加獨立,變量的訪問更清晰 - 除非您過度使用模塊變量。另外,它更容易重用其他程序中模塊的過程。

+0

因此'contains'語句之後的子例程不會相互繼承變量?我可以安全地在同一'contains'塊中的子例程中使用重疊的變量名集,無論它是在主代碼還是在模塊中?或者,被調用者是否從調用子例程繼承,例如? –

+0

如果您必須回答基本上與答案中相同的單詞,則表明它可能是重複的。 –