この節では, moduleimport キーワードを使ういくつかのシナリオの例を用意しています.

This section provides examples of different scenarios for using the module and import keywords.

これらのキーワードをどうやって使うかを説明しますので, 先のサンプル・コードに進んでいってください.

To illustrate how these keywords are used, let’s step through some sample code.

Importing from the Motoko base library

import のもっとも良くあるシナリオの一つは, このガイドの例の中や例題リポジトリの Motoko プロジェクト, Motoko ベース・ライブラリからモジュールをインポートしているチュートリアルで説明しています. ベース・ライブラリからモジュールをインポートすると, ゼロから似たようなものを書き直さずに, モジュールに定義されている値, 関数, 型を再利用することができます.

One of the most common import scenarios is one that you see illustrated in the examples in this guide, in the Motoko projects in the examples repository, and in the tutorials involves importing modules from the Motoko base library. Importing modules from the base library enables you to re-use the values, functions and types defined in those modules rather than writing similar ones from scratch.

次の二行では, Array モジュールと Result モジュールから関数をインポートしています:

The following two lines import functions from the Array and Result modules:

import Array "mo:base/Array";
import Result "mo:base/Result";

import 宣言を見ると, mo: 前置子を付けることで, Motoko モジュールとして識別していること, 宣言にはファイル拡張子の .mo は付けていないことが分かりますね.

Notice that the import declaration includes the mo: prefix to identify the module as a Motoko module and that the declaration does not include the .mo file type extension.

上の例では, 識別子パタンを用いてモジュール全体をインポートしていますが, オブジェクト・パタンの構文を用いれば, シンボルの部分集合だけを選択的にインポートすることもできます:

Above example uses an identifier pattern to import modules wholesale, but you can also selectively import a subset of symbols from a module by resorting to the object pattern syntax:

import { map, find, foldLeft = fold } = "mo:base/Array";

この例では, 関数 mapfind を名前を変えずにインポートし, foldLeft 関数を fold としてインポートしています.

In this example, the functions map and find are imported unaltered, while the foldLeft function is renamed to fold.

Importing local files

Motoko でプログラムを書くときの別のやり方として, ソース・コードを複数のモジュールに分割するやり方があります. 例えばアプリケーションを次のようなモデルを用いて設計します:

Another common approach to writing programs in Motoko involves splitting up the source code into different modules. For example, you might design an application to use the following model:

このシナリオでは, この三つのファイルを全部同じディレクトリに置いて, 必要なときに使えるようにローカル・インポートします.

In this scenario, you might place all three files in the same directory and use a local import to make the functions available where they are needed.

例えば, main.mo には以下の行を入れて, 同じディレクトリ内のモジュールを参照します:

For example, the main.mo contains the following lines to reference the modules in the same directory:

import Types "types";
import Utils "utils";

これらの行では, モジュールは Motoko ライブラリからではなく, ローカル・プロジェクトからインポートするので, インポート宣言では mo: 前置子は使いません.

Because these lines import modules from the local project instead of the Motoko library, these import declarations don’t use the mo: prefix.

この例では, type.mo ファイルも utils.mo ファイルも main.mo ファイルと同じディレクトリにあります. 個々でも .mo 後置子は使っていません.

In this example, both the types.mo and utils.mo files are in the same directory as the main.mo file. Once again, import does not use the .mo file suffix.

Importing from another package or directory

他のパッケージやローカル・ディレクトリ以外のディレクトリからインポートすることもできます.

You can also import modules from other packages or from directories other than the local directory.