差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| tutorial:nim:modules [2024/03/11 23:03] – freemikan | tutorial:nim:modules [2025/05/20 11:20] (現在) – 削除 freemikan | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| - | ====== モジュール ====== | ||
| - | |||
| - | このチュートリアルでは数行程度の僅かなコードのプログラムしか作ってきませんでした。現実的なプログラムではもっと多くのコードが必要になります。多くの場合は一つのファイルに全てのコードを詰め込むよりも、そのコードの特性によって複数のファイルに分割したほうが管理しやすくなります。それぞれのファイルは独立したコンパイル単位、つまり、別々にコンパイルされます。そして、通常は、一つのファイルが一つのモジュールになります。 | ||
| - | |||
| - | ====== インポート ====== | ||
| - | |||
| - | モジュールはインポートして使用します。 | ||
| - | |||
| - | 例えば、myAppというプログラムがあったとして、次のような構成になっていたとします。 | ||
| - | |||
| - | myApp/ | ||
| - | ├── main.nim | ||
| - | ├── moduleA.nim | ||
| - | ├── moduleB.nim | ||
| - | └── other/ | ||
| - | ├── moduleA.nim | ||
| - | └── moduleB.nim | ||
| - | |||
| - | そして、__main.nim__はmoduleAとmoduleBを使用し、moduleAはotherのmoduleAを、moduleBはotherのmoduleBを使用していたとします。このような依存関係があるとき、各ファイルでimport文を使用して、それぞれ必要とするモジュールをインポートします。 | ||
| - | |||
| - | < | ||
| - | # main.nim | ||
| - | import moduleA | ||
| - | import moduleB | ||
| - | ... | ||
| - | |||
| - | # moduleA.nim | ||
| - | import other/ | ||
| - | ... | ||
| - | |||
| - | # moduleB.nim | ||
| - | import other/ | ||
| - | |||
| - | # other/ | ||
| - | ... | ||
| - | |||
| - | # other/ | ||
| - | ... | ||
| - | </ | ||
| - | |||
| - | このプログラムをビルドするには、トップレベルのソースファイルである__main.nim__だけをコンパイルに渡します。依存するモジュールの解決とソースファイルのコンパイルは自動的に行われます。 | ||
| - | |||
| - | <cli> | ||
| - | $ cd / | ||
| - | $ nim compile --out:myApp main.nim | ||
| - | Hint: used config file '/ | ||
| - | Hint: used config file '/ | ||
| - | ........................................................................ | ||
| - | Hint: [Link] | ||
| - | Hint: mm: orc; threads: on; opt: none (DEBUG BUILD, `-d: | ||
| - | 27620 lines; 0.120s; 30.332MiB peakmem; proj: / | ||
| - | </ | ||
| - | |||
| - | ====== エクスポート ====== | ||
| - | |||
| - | |||
