プログラミング言語のライブラリは、ルーチンの集合(プログラミング命令セット)を表します。Dartには、常用のルーチンを格納するために使用できる一連の組み込みライブラリがあります。Dartライブラリには、クラス、定数、関数、typedef、属性、および例外のセットが含まれています。
目次
ライブラリをインポートする
インポートすると、ライブラリ内のコンポーネントを呼び出し元のコードで使用できるようになります。import
キーワードは、同じ目標を達成するために使用されます。dartファイルには複数のimport
ステートメントを含めることができます。
組み込みのDartライブラリURIは、dart:scheme
を使用してライブラリを参照します。その他のライブラリは、ファイルシステムのパスまたはpackage:scheme
を使用してURIを指定できます。パッケージマネージャー(pubツールなど)によって提供されるライブラリは、package:scheme
を使用します。
次には、Dartにライブラリをインポートするための構文を示します。
import 'URI'
以下のコードスニペットを読みます。
import 'dart:io'
import 'package:lib1/libfile.dart'
ライブラリの一部のみを使用する場合は、ライブラリを選択的にインポートできます。構文は以下のとおりです。
import 'package: lib1/lib1.dart' show foo, bar;
// Import only foo and bar.
import 'package: mylib/mylib.dart' hide foo;
// Import all names except foo
次には、常用のライブラリを示します。
番号 | クラスライブラリ | 説明 |
1 | dart:io | サーバーアプリケーションのファイル、ソケット、HTTP、およびその他のI/Oサポートです。このライブラリは、ブラウザベースのアプリケーションでは機能しません。このライブラリはデフォルトでインポートされます。 |
2 | dart:core | 各Dartプログラムの組み込み型、集合、およびその他のコア関数です。 このライブラリはデフォルトでインポートされます。 |
3 | dart:math | 数学の定数と関数、または乱数ジェネレーターです。 |
4 | dart:convert | JSONやUTF-8など、さまざまなデータ表現の間に変換するため、使用されるエンコーダとデコーダです。 |
5 | dart:typed_data | 固定サイズのデータ(例えば、8バイトの符号なし整数)のリストを効率的に処理します。 |
実例:ライブラリをインポートして使用する
以下の実例では、組み込みライブラリdart:mathをインポートします。上記のコードは、数学ライブラリからsqrt()関数を呼び出すことです。この関数は、渡された数値の平方根を返します。
import 'dart:math';
void main() {
print("Square root of 36 is: ${sqrt(36)}");
}
上記のコードを実行した後、出力結果は以下のとおりです。
Square root of 36 is: 6.0
パッケージライブラリ
Dartスクリプトでは、識別子の前にアンダースコア(_)を付けて、そのコンポーネントをプライベートとしてマークできます。つまり、Dartライブラリは、カプセル化と呼ばれる外部スクリプトによって、コンテンツへのアクセスを制限できます。同じ構文を以下に示します。
構文
_identifier
実例
まず、プライベート関数定義ライブラリを使用します。
library loggerlib;
void _log(msg) {
print("Log method called in loggerlib msg:$msg");
}
次には、ライブラリをインポートします。
import 'test.dart' as web;
void main() {
web._log("hello from webloggerlib");
}
上記のコードを実行すると、次のエラーが発生されます。
Unhandled exception:
No top-level method 'web._log' declared.
NoSuchMethodError: method not found: 'web._log'
Receiver: top-level
Arguments: [...]
#0 NoSuchMethodError._throwNew (dart:core-patch/errors_patch.dart:184)
#1 main (file:///C:/Users/Administrator/WebstormProjects/untitled/Assertion.dart:6:3)
#2 _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:161)
#3 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:98)
カスタムライブラリを作成する
Dartは、独自のコードをライブラリとして使用することもできます。カスタムライブラリの作成には、以下のステップが含まれます。
ステップ1:ライブラリを宣言する
ライブラリを明示的に宣言するには、libraryステートメントを使用します。ライブラリを宣言するための構文は以下のとおりです。
library library_name
// library contents go here
ステップ2:ライブラリを関連付ける
ライブラリは2つの方法で関連付けることができます。
同じディレクトリ内に
import 'library_name'
異なるディレクトリ内に
import 'dir/library_name'
実例:カスタムライブラリ
まず、カスタムライブラリ – calculator.dart
を定義します。
library calculator_lib;
import 'dart:math';
//import statement after the libaray statement
int add(int firstNumber,int secondNumber){
print("inside add method of Calculator Library ") ;
return firstNumber+secondNumber;
}
int modulus(int firstNumber,int secondNumber){
print("inside modulus method of Calculator Library ") ;
return firstNumber%secondNumber;
}
int random(int no){
return new Random().nextInt(no);
}
次には、上記のカスタムライブラリをインポートします。
import 'calculator.dart';
void main() {
var num1 = 10;
var num2 = 20;
var sum = add(num1,num2);
var mod = modulus(num1,num2);
var r = random(10);
print("$num1 + $num2 = $sum");
print("$num1 % $num2= $mod");
print("random no $r");
}
上記のコードを実行した後、出力結果は以下のとおりです。
inside add method of Calculator Library
inside modulus method of Calculator Library
10 + 20 = 30
10 % 20= 10
random no 0
ライブラリプレフィックス
識別子が競合する2つのライブラリをインポートする場合は、一方または両方のライブラリにプレフィックスを指定できます。as
キーワードを使用して、プレフィックスを指定します。
構文
import 'library_uri' as prefix
実例
まず、ライブラリloggerlib.dartを定義します。コードは以下のとおりです。
library loggerlib;
void log(msg){
print("Log method called in loggerlib msg:$msg");
}
次には、別のライブラリwebloggerlib.dartを定義します。コードは以下のとおりです。
library webloggerlib;
void log(msg){
print("Log method called in webloggerlib msg:$msg");
}
最後に、プレフィックス付きのライブラリをインポートします。
import 'loggerlib.dart';
import 'webloggerlib.dart' as web;
// prefix avoids function name clashes
void main(){
log("hello from loggerlib");
web.log("hello from webloggerlib");
}
上記のコードを実行した後、出力結果は以下のとおりです。
Log method called in loggerlib msg:hello from loggerlib
Log method called in webloggerlib msg:hello from webloggerlib
コメントを残す