当前位置: 首页 > 工具软件 > Quiver Dart > 使用案例 >

dart参数传方法_Dart语法

鲁鸿
2023-12-01

1.Dart程序运行的入口是main函数,所以写一段Dart程序时,必须要有main函数

void main(List args){

print("Hello Dart");

}

2.Dart定义变量

Dart为强类型语言

第一种定义变量方式,明确类型声明,如

String name = "xiaoming";

int age = 1;

double height = 12.1;

int a = "xiaoming"; //错误的定义方式

print("${name} ${age} ${height}");

//如果是变量的话{}可以省略,有的时候不能省略

print("$name $age $height");

//打印类型

print(name.runtimeType);

print(age.runtimeType);

print(height.runtimeType);

第二种定义变量方式,类型推导方式,如

var hint = "hello";

//hint = 100; //错误的赋值,hint为String类型

print("$hint");

const name1="你好"; //常量,不可再赋值

final name2="你好"; //常量,不可再赋值

//区别

// const 声明时必须直接赋值

// final 可以运行时赋值,如接收一个函数的返回值

dynamic cc = "a";

cc = 10; //可以

print(cc.runtimeType);

3.Dart支持10进制和16进制,其他不支持

4.Dart中不通过非空值作为Boolean 类型来判断

String s = "123";

if(s){ //行不通

//

}

5.定义字符串的三种方式,三种方式都可以

String s1 = "123456";

String s2 = '123456';

String s3 = '''

abc

def

''';

//当$后面是表达式时,则必须放在{}中

print("name:${name.runtimeType} age:${age.runtimeType} height:${height.runtimeType}");

6.集合

List Set Map

void main(List args){

List nameList = ['xiaoming','xiaohong','xiaogang','xiaoming','xiaohong'];

Set numberList = {1,2,3,4,5,6};

// print(nameList);

// print(numberList);

// Set集合不能有重复元素,可以使用Set来去重

List newNameList = List.from(Set.from(nameList));

print(newNameList);

Map info = {

"name":"yes",

"age":18,

"height":2.1

};

print(info);

}

7.Dart的函数

//如何让函数的参数可传可不传?

两种方式:

1.通过[]将参数括起来是位置方式,值参会按顺序传参,如果不传为null

2.通过{}将参数括起来是命令方式,传参数时以key:value的形式传参

可以给可选参数设置默认值,必传参数不可设置默认值

void main(List args){

testFun1("li",18,29.1);

testFun1("li");

testFun1("li",16);

testFun2("li",age:12);

}

void testFun1(String name,[int age=20,double height]){

// age=20表示没有参数时,使用默认值20

print(name);

print(age);

print(height);

}

void testFun2(String name,{int age=20,double height}){

print(name);

print(age);

print(height);

}

函数可以作为另一个函数的参数传递

void main(List args){

testFun2(testFun1);

}

void testFun1(){

print("函数可以作为参数传递");

}

void testFun2(Function test){

test();

}

函数可以作为另一个函数的返回值

void main(List args){

Function tempFunc = testFun2();

tempFunc(); //调用返回的函数

}

void testFun1(){

print("函数可以作为另一个函数的返回值");

}

Function testFun2(){

return testFun1;

}

匿名函数的使用

void main(List args){

List nameList = ['xiaoming','xiaohong','xiaogang'];

//forEach()中要求传一个函数,可以通过 (参数) {} 直接定义一个匿名函数传入

nameList.forEach((item){

print(item);

});

//如果只有一行简单的代码,可以使用箭头函数

nameList.forEach((item)=> print(item));

}

map函数的使用

List nameList = ['xiaoming','xiaohong','xiaogang'];

final result = nameList.map((item)=> item+"hahaha");

print(result);

//将result转换为一个数组

final result = List.from(nameList.map((item)=> item+"hahaha"));

print(result);

8.类

main(List args){

// final p = new Person();

final p = Person(); //Dart 2.0以上版本 可以省略new

p.name="gao";

p.age = 12;

p.eating();

}

class Person {

String name;

int age;

void eating(){

print("${this.name}在吃早餐");

}

}

9.构造函数

1.无构造函数时,默认创建一个无参构造函数

2.Dart不支持构造函数的重载

main(List args){

// final p = new Person();

// final p = Person("xiaoming",12); //Dart 2.0以上版本 可以省略new

// final p = Person("xiaoming");

// final p = Person(name:"xiaoming", shengao:170);

Map params = {

"name":"Jerry",

"age":20,

"shengao":190

};

final p = Person.fromMap(params);

// p.name="gao";

// p.age = 12;

p.eating();

}

class Person {

String name;

int age;

int shengao;

//方式1

// Person(String name, int age){

// this.name = name;

// this.age = age;

// }

//方式2

// Person(String name,[int age,int shengao]){

// this.name = name;

// this.age = age;

// this.shengao = shengao;

// }

//方式3

// Person(String name,{int age,int shengao}){

// this.name = name;

// this.age = age;

// this.shengao = shengao;

// }

// //方式4

// Person({String name,int age,int shengao}){

// this.name = name;

// this.age = age;

// this.shengao = shengao;

// }

//方式5 语法糖写法,效果与方式4一致

、// Person({this.name, this.age, this.shengao});

//初始化列表 可以在:后面初始化列表

Person({this.name, this.age, this.shengao}) : twoAge = age * 2;

//方式6 通过传入map数据来创建构造函数

//命名构造函数

Person.fromMap(Map map) {

this.name = map["name"];

this.age = map["age"];

this.shengao = map["shengao"];

}

void eating(){

print("${this.name}在吃早餐");

}

}

10.抽象类

抽象类跟java中类似

默认类也是接口,可以被implements

11. dynamic和Object有什么区别?

Dart中默认所有类继承自Object

dynamic 可以动态指定类型

 类似资料: