Dart 프로그래밍-도서관
프로그래밍 언어의 라이브러리는 루틴 모음 (프로그래밍 명령 집합)을 나타냅니다. Dart에는 자주 사용되는 루틴을 저장하는 데 유용한 내장 라이브러리 세트가 있습니다. Dart 라이브러리는 클래스, 상수, 함수, typedef, 속성 및 예외의 집합으로 구성됩니다.
라이브러리 가져 오기
가져 오면 라이브러리의 구성 요소를 호출자 코드에서 사용할 수 있습니다. 가져 오기 키워드는 동일한 작업을 수행하는 데 사용됩니다. dart 파일에는 여러 개의 import 문이있을 수 있습니다.
내장 된 Dart 라이브러리 URI는 dart : 체계를 사용하여 라이브러리를 참조합니다. 다른 라이브러리는 파일 시스템 경로 또는 package : 체계를 사용하여 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
일반적으로 사용되는 일부 라이브러리는 다음과 같습니다.
Sr. 아니요 | 도서관 및 설명 |
---|---|
1 | dart:io 서버 응용 프로그램에 대한 파일, 소켓, HTTP 및 기타 I / O 지원. 이 라이브러리는 브라우저 기반 애플리케이션에서 작동하지 않습니다. 이 라이브러리는 기본적으로 가져옵니다. |
2 | dart:core 모든 Dart 프로그램에 내장 된 유형, 컬렉션 및 기타 핵심 기능. 이 라이브러리는 자동으로 가져옵니다. |
삼 | dart: math 수학 상수 및 함수와 난수 생성기. |
4 | dart: convert JSON 및 UTF-8을 포함하여 서로 다른 데이터 표현 간 변환을위한 인코더 및 디코더. |
5 | dart: typed_data 고정 된 크기의 데이터 (예 : 부호없는 8 바이트 정수)를 효율적으로 처리하는 목록입니다. |
예 : 라이브러리 가져 오기 및 사용
다음 예제는 내장 라이브러리를 가져옵니다. dart: math. 스 니펫은sqrt() 기능 math도서관. 이 함수는 전달 된 숫자의 제곱근을 반환합니다.
import 'dart:math';
void main() {
print("Square root of 36 is: ${sqrt(36)}");
}
Output
Square root of 36 is: 6.0
라이브러리의 캡슐화
Dart 스크립트는 식별자 앞에 밑줄 (_)을 붙여 구성 요소를 비공개로 표시 할 수 있습니다. 간단히 말해, Dart 라이브러리는 외부 스크립트에 의한 콘텐츠 액세스를 제한 할 수 있습니다. 이것은 다음과 같이 불립니다.encapsulation. 동일한 구문은 다음과 같습니다.
통사론
_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:261)
#3 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:148)
사용자 지정 라이브러리 생성
Dart를 사용하면 자신의 코드를 라이브러리로 사용할 수도 있습니다. 사용자 정의 라이브러리를 생성하려면 다음 단계가 필요합니다.
Step 1: Declaring a Library
라이브러리를 명시 적으로 선언하려면 library statement. 라이브러리를 선언하는 구문은 다음과 같습니다.
library library_name
// library contents go here
Step 2: Associating a Library
두 가지 방법으로 라이브러리를 연결할 수 있습니다.
- 동일한 디렉토리 내
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");
}
프로그램은 다음을 생성해야합니다. output −
inside add method of Calculator Library
inside modulus method of Calculator Library
10 + 20 = 30
10 % 20= 10
random no 0
라이브러리 접두사
충돌하는 식별자가있는 두 개의 라이브러리를 가져 오는 경우 하나 또는 두 라이브러리 모두에 접두사를 지정할 수 있습니다. 사용'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");
}
다음을 생성합니다. output −
Log method called in loggerlib msg:hello from loggerlib
Log method called in webloggerlib msg:hello from webloggerlib