1. Dart 구문
1. 개발 도구
플러그인 설치: dart, Code Runner
3. Dart 변수
Dart는 그럴 필요가 없는 강력한 스크립트 언어입니다. 사전 정의된 유형, 자동 유형 추론
dart에 정의된 변수는 var 키워드를 통해 선언할 수 있습니다.
dart에는 유형 검사가 있습니다.
예:
main(){ print('你好,dart'); } // 表示main方法没有返回值 void main(){ print('你好,dart'); }
4. Dart 변수
final const는 상수를 정의할 수 있습니다.
final 값을 할당하지 않고 시작할 수 있으며 값은 한 번만 할당할 수 있습니다. final은 const 컴파일 타임 상수의 특성을 가질 뿐만 아니라 가장 중요한 것은 런타임 상수이고 final은 지연 초기화라는 것입니다. , 즉, 런타임 시 처음 사용되기 전에는 초기화되지 않습니다
예:
var str = 'this is var'; String str = 'this is string'; int str = 123;
5. Dart 데이터 유형
숫자(숫자 값): int double
문자열(문자열): String
const NUM = 123; final Time = new DateTime.now();
불리언(Boolean): bool
如:var str = 'this is a string'; String str = 'this is a string'; // 定义多行字符串 String str = ''' my name is wq; my age is 23; '''; // 字符串拼接 String name = 'wq'; int age = 23; String myInfo = '我的名字叫$name,我今年$age岁'; // 注意:如果使用+实现字符串拼接,那么必须要是同类型的数据 String firstName = '王'; String lastName = '清'; String myInfo = lastName + ':' + firstName;
리스트(list): js Array
bool flag = true;
에 있습니다. 맵(딕셔너리): 맵은 키-값 쌍에 관련된 객체입니다
// 第一种定义List的方式 var list1 = [1,2,3]; print(list1.length); // 第二种定义List的方式 var list = new List(); list.add(1); list.add(2); // 定义List指定元素类型 var list = new List<String>(); list.add('王清');
6) 타입 변환
1) 사이의 변환. Number 및 String 유형
①Number는 String 유형 toString()
// 第一种定义Map var person = { "name": "王清", "age": 23 }; print(person['name']); // 第二种定义Map var p = new Map(); p['name'] = '王清'; print(p); 问:如何判断类型?(关键字 is) var str = '123'; if (str is String) { print('字符串类型'); } else if (str is int) { print('数值类型'); } 注意: 取整运算符 如:print(12~/5); // 2 为空赋值 如:int b; b??=23; print(b); // 23 解释:如果b为空的话就赋值23 int a; int b = a??10; print(b); // 10
으로 변환됩니다. ②String은 Number 유형 parse
int num = 12; print(num.toString());
로 변환됩니다. 2) 기타 유형은 Boolean 유형
String str = '123'; print(int.parse(str)); print(double.parse(str));
7.List
으로 변환됩니다. 공통 속성:
length: length
reversed: Flipped
var list = [1,2,3] ;
print(list.reversed.toList()) Element
(Addall (): 스티칭 목록 list.adddall ([1, 2,3]) Indexof(): 데이터를 찾고, 반환 요소를 찾고, 반환할 요소를 찾습니다. -1 제거(): 지정된 요소를 삭제합니다. 통해 통해 통해 사용 사용 사용 사용 통해 out out out out out out throughmballowallowallowallowallowallow out out out out out off back through out off off through out through off out off through out through through through through throughaboutfromfromfromthroughfrom-from-al-with-list.fillRange(2, 4, 1 ); //아래첨자 2~3 사이의 요소를 1로 수정 ~ insert (index,,) Inserts and ): 다른 유형을 목록으로 변환 Join(): 목록을 문자열로 변환 String strList = list.join(' -'); 분할(): 문자열은 List8.Set로 변환됩니다. 세트는 무질서하고 사용할 수 없는 세트이므로 입찰로 얻을 수 없습니다. 주요 기능은 일반적으로 사용되는 속성을 평가하는 것입니다. ISEMPTY: 비어 있는지 여부 IsnoteMpty: 비어 있지 않은지 여부 FIRST: 첫 번째 요소 반환 last: 마지막 요소 반환 길이: 길이 일반적인 방법: addAll: 목록 추가 및 set to Set 포함: 단일 요소가 포함되어 있는지 쿼리 set.contains(1) containAll : 여러 요소가 포함되어 있는지 쿼리 set.containsAll([1,2]) 차이점: 서로 다른 세트의 두 요소를 반환 set1.difference(set2).toList() Intersection: 동일한 요소를 가진 두 요소를 반환Union: 두 집합의 모든 요소를 포함
①isEmpty:判断当前字符串是否为空 String str = ''; print(str.isEmpty); ②未赋值 var myNum; print(myNum == null); // true ③为0 var myNum=0; print(myNum ==0); // true ④为NaN var myNum = 0/0; print(myNum.isNaN); // trueClear: Clear firstWhere: 다음에 따라 첫 번째 정규화된 값을 쿼리합니다. 조건 전달
Set set1 = [1,2,3].toSet(); Set set2 = [2,3,4].toSet(); print(set1.union(set2).toList()); // [1,2,3,4]lastWhere: 조건에 따라 첫 번째 정규화된 값을 역으로 쿼리
Set set1 = [1,2,100,200,300,3].toSet(); var list = set1.firstWhere((value){ return value > 100; }); print(list); // 200W Removewhere: 정규화된 요소 삭제
Set set1 = [1,2,100,200,300,3].toSet(); var list = set1.firstWhere((value){ return value > 100; }); print(list); // 300E
RETAINWHERE: 정규화된 요소 유지
Set set1 = [1,2,100,200,300,3].toSet(); set1.removeWhere((value){ return value > 100; }); print(set1); // {1, 2, 100, 3}E
RETAINALL: 현재 값만 유지
Set set1 = [1,2,100,200,300,3].toSet(); set1.retainWhere((value){ return value > 100; }); print(set1); // {200,300}E
Removeall: 삭제 현재 값
Set set1 = [1,2,100,200,300,3].toSet(); set1.retainAll([1,2]); print(set1); // {1,2}E
매핑)은 순서가 지정되지 않은 키-값 쌍입니다
공통 속성:
키: 모든 키 값 가져오기
값: 모든 값 값 가져오기 IsEmpty: 비어 있는지 여부
공통 속성 :
addAll(): 여러 키-값 쌍 추가
ㅋㅋㅋ '], "일":["배달 직원"] }); 제거( key): 키 key name'); containValue(value):를 사용하여 키-값 쌍을 삭제합니다. Map에 이 값의 키-값 쌍이 있는지 여부")10. forEach map where any (List, Set, Map에 공통) 일반 루프: List list = [100,200,300,400]; for(var i in list){ print(i) ; // 100 200 300 400 } } forEach 루프: 목록 목록 = [100,200,300,400]; list.forEach((값 ) => print(값)); List.forEach((값 ; var newList = list.map((값)){ var newList = list.map((값){ var newList 반환 값 * 2 ; }); print(newList.toList()); // [200,400,600,800] where loop: List list = [100,200,300,400];var newList = list.where((value ){
반환 값 > 200; 조건 요소(있는 경우) 반환 true 목록 목록 = [100,200,300,400]; var 플래그 = list.any((값) 사용 '사용 ' 사용 ' 사용 ' 을 통해 through ‐ ward ‐ ‐ ‐ ‐ 값 > 200 반환; 인쇄 (플래그);
의미: 모든 요소가 조건을 충족하는지 확인하고 모든 요소가 조건을 충족하면 true를 반환합니다.
목록 목록 = [100,200,300,400];
var 플래그 = list.every((값){
. .
} );
print(flag); Body
RETURN return
} ① 오류를 보고하는 경우 매개변수 유형을 int로 정의합니다. 기타 유형
int Getnum (int N) {
Return n;
}
var n = getnum (60) (60) ; T Print (n) // 60
② 선택적 매개변수
String PRINTUSERINFO (문자열 이름, [int Age, 문자열 성별]) {
if (Age! = NULL && SEX! = NULL) {
}
R Printuserinfo ('Wang Qing', 20)) ③ 기본 매개변수 String Printuserinfo (문자열 이름, [int age = 10]) { if (Age! = NULL) { Return '$ name $ age'; name $age'; Print(printUserInfo('Wang Qing')); ④이름이 지정된 매개변수 String printUserInfo(String name, {String sex, int age=10}){ '$name 반환 '; In} Printuserinfo('왕칭', 성별: '남성', 나이: 20))작은 지식 포인트:值 값이 짝수인지 멋진 숫자인지 결정합니까?为 ISEVEN인가요?
ISODD인가요? 이상한 숫자인가요? Bao의 특징
전역 변수: 전역 변수가 메모리를 오염시키므로 메모리에 남지 않고 재활용됩니다. 가비지 재활용 메커니즘을 통해 전 세계를 오염시키지 않습니다.
12. 클래스 개체
Dart의 모든 개체는 개체 클래스에서 상속됩니다.
Dart는 개체 지향적입니다. 클래스와 단일 상속을 사용하는 언어이며 모든 객체는 클래스입니다. Person(String name,int age)의 예{
This.name = name;
this.age = age;
}
// 명명된 생성자: 명명된 생성자는 여러 개 작성할 수 있지만 생성자는 하나만 있을 수 있습니다. Person.now(문자열 이름, int age){
> {
인쇄("$ {this.name} --- $ {this.age}");
p.getInfo();p2.getinfo ()에서
} :: 다른 파일에서 클래스를 제거하는 방법 1. 위 클래스로 새 person.dart 파일 콘텐츠 만들기 2. 견적 가져오기 'Person.dart'; void main(){ Person p = new Person.now('Wang Qing',23);프라이빗 속성:
Dart 및 기타 객체 지향 언어가 다릅니다. private, public 및 protected와 같은 한정자는 속성이나 메서드를 private으로 정의하는 데 사용할 수 있습니다. 프라이빗 속성이나 메서드는 인스턴스화를 통해 직접 호출할 수 없지만
을 사용하려면 함수는 다음과 같이 축약될 수 있습니다
Person(this._name,this.age);
- 생성자 Person.Now (문자열 이름, int age) {
this._name = 이름
this.age = 나이;
}
void getinfo () {
인쇄 ("$ {this. _name}---${this.age}");
Getter 및 Setter 수정자:
Re Class RECT { num height; num 너비; setareawidth(값) { This.Height = Value; }}} void main () { Rect R = New RECT (10, 10); // get을 호출하기 위해 속성에 액세스하여 get을 호출합니다. 수정 방법 ~ | , 생성자가 실행되기 전에 인스턴스 변수를 초기화합니다. class RECT { num height; num width; Rect (): height = 10, width = 10 {} {{{
3 ) 정적 멤버 s ① 정적 키워드를 사용하여 클래스 수준 변수 및 함수 달성
② 정적 메서드는 비정적 멤버에 액세스할 수 없습니다. 비정적 메서드는 정적 멤버에 액세스할 수 있습니다.
클래스 사람 {
정적 문자열 이름 = 'Wang Qing ';ㅋㅋㅋ 무효 메인(){
... 반 사람 {문자열 이름; 숫자 나이; } 무효 메인(){ ; //객체가 클래스의 인스턴스인지 확인 using using using using using 's' using 's 사용하다 ‐ ‐ ‐ ‐ ‐ 1 대 1 ; p1 = ''; p1 = new Person('Wang Qing', 20); 쇼 (); ③하위 클래스는 메소드 getter를 재정의할 수 있으며 상위 클래스의 설정자입니다. 문자열 높이 = '170cm'; 사용자 (이.이름,이.나이); ' s ' s ‐ ‐ ‐ ‐ Person.other(this.name, this.age);
}
class Web은 Person을 확장합니다. ' ' s ' s ' s ' s ' s t ‐ ‐ ‐ ‐ :super(이름,나이){
this.sex = sex; void run(){
+ ' ~ Print의 아버지 속성(this.height) } // 상위 클래스의 메소드 작성 @@Override // 작성 가능 여부 권장 void printinfo () { 'Print (' sub -class printinfo ') }}} void main () { web w = new web (' Zhang San ', 12, ' Man ' ); w.printinfo (); w.work(); A ① ABSTRACT 키워드를 통한 추상 클래스 정의 ② DART에는 메소드의 메소드가 없습니다. 추상 클래스를 인터페이스로 구현하려면 추상 클래스에 정의된 모든 메서드와 속성을 구현해야 합니다. ⑤ 추상 클래스는 인스턴스화할 수 없으며 이를 상속하는 하위 클래스만 인스턴스화할 수 있습니다. 확장과 구현의 차이점: ① 추상 클래스에서 메소드를 재사용하고, 자체 클래스 그리기를 제한하기 위해 추상 메소드를 사용하려면 확장을 사용하여 추상 클래스를 상속합니다 ② 추상 클래스만 표준으로 간주한다면 구현을 사용하여 구현합니다. 추상적 클래스 T 추상 클래스 동물 { void 귀); // 추상 메서드 void drink () { proprint ('물을 마시고 싶어요')~ ( ) {void run () {void run () void main () {dog d = new dog ();Abstract DB {
String URL; addl (); ; } 추상 클래스 b { propb (); Return null } @& oVERRIDE Printb () { Return null; 믹스인 사용 조건: ① 믹스인 클래스는 Object에서만 상속할 수 있고 다른 클래스에서는 상속할 수 없습니다. ② 믹스인 클래스는 생성자를 가질 수 없습니다. ③ A 클래스 여러 믹스인 클래스를 믹스인할 수 있습니다 ④ 믹스인은 결코 인터페이스가 아니지만 새로운 기능입니다 ~ | ~ 클래스 B{ printB(){ 클래스 D(A,B){ }void main(){ C c = new C(); c.printA(); .
}
참고: 확장 또는 with, 동일한 메소드가 존재하면 나중에 호출하는 사람이 이를 호출합니다
14. Generics
이해: Generics는 클래스, 인터페이스 및 메소드의 재사용을 해결합니다. ① Generic 메소드
인쇄(getDatae552c297f18461dc93db9dab3fadc57a 확장 캐시 ㅋㅋㅋ ~ 작은 지식 포인트: 识 ① 부분 가져오기 Import 'lib/mymath.dart' show getName; // getName 메소드만 도입; Import 'lib/mymath.dart' hide getName; // getname 메소드만 숨기기
위 내용은 Dart 기본 지식 포인트 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!