第二章---Dart语言入门

Dart从2.0开始变为强类型语言,静态类型。这点和Java、C#等比较相似。也就是说在编译时就已经知道变量的类型那么就是静态类型语言。开发人员在开发的时候需要指定变量的类型。这有什么优点呢? 就是所有类型检查都可以通过编译器来完成。可以提前预报一些琐碎的错误。同时Dart还是面向对象的编程语言。
摘要由CSDN通过智能技术生成

2.1 变量与常量

  掌握常量与变量是任何语言的基础。Dart通过XXX.runtimeType输出XXX类型

2.1.1 变量

  使用var声明一个变量,然后可以给变量设置不同值。在未初始化时,默认未null。

// 使用var但不对其初始化,var可任意修改类型
var number;
number = 20
number = "30" // 正常执行
// 使用var同时对其初始化,触发类型推导,给num设置类型
var num = 20;
num = "30" // 报错(num是数值类型,非字符串)

  ⚠️Dart是一门强类型语言,在确定了类型后不能更改为其它类型。如果真的想改变Dart中的变量类型,可以使用dynamic关键字。

2.1.2 常量

  如果想设置一个常量,即让一个变量不可变,那么可以使用final或者const进行修饰。
  那么,constfinal的区别在哪里呢?
  const必须直接赋值常量
  final可以通过运行时赋值

const num1 = getNum() // 报错const必须直接赋值
final num2 = getNum() // 可以通过运行时执行
const num3 = 10 // 正常执行
final num4 = 10 // 正常执行
int getNum(){
   
 return 10
}

2.1.3 内置类型

Dart内置了一些类型,具体如下:

  • Number(数值型)
  • String(字符串)
  • Boolean(布尔值)
  • List(列表)|| Set(列表)
  • Map(键值对)
  • Runs(符号字符)
  • Symbols(标识符)

2.1.4 集合类型

  • List类型:[元素1,元素2,…]- -List<int>=[] 允许重复元素&&有顺序(index)之分
  • Set类型:{元素1,元素2,…}- -Set<int>={} 不允许重复元素&&无顺序(index)之分
  • Map类型:{key1:value1,key2:value2,…}- -Map<String,dynamic>={}

⚠️Set较少使用,主要用于:List.from(Set.from(list1))➡️为List类型去重

2.2 函数

2.2.1 函数定义

  • 函数定义:

返回值 函数的名称(参数列表){
  函数体
  return 返回值
}

  • main函数

  每个应用程序都必须有一个main函数,这一点和Java一样,它是应用程序的入口点,该main函数返回void并具有List的可选参数。
flutter中的入口函数是这样写的:
  void main()=>runApp(MyApp())

2.2.2 可选参数

  • 命名参数:

在定义函数的时候使用{}指定命名参数,使用函数时根据命名传入参数。例如:
  编写函数:void Test(int num1,{int num2}){}
  使用函数:Test(1,num2:2)

  • 位置参数

在定义函数的时候使用[]指定位置参数,使用函数时根据位置传入参数。例如:
  编写函数:void Test(int num1,[int num2]){}
  使用函数:Test(1,2)

2.2.3 必选参数

在调用函数时必须传入一些参数,这个时候就可以使用@required来修饰,使用@required有利于静态代码分析器进行检查。
编写函数:void Test(@required int num1){}

2.2.4 默认参数

默认值是编译时的常量,在函数的参数后面使用=来为参数赋值
编写函数:void Test({int num1=1}){} 默认值只能给可选参数使用!

2.2.5 函数一等公民

  • 函数作为参数传递
void printItem(String name){
   
  print(name)
}
List<String> names = ['Jone','Boe','Sandy'];
name.forEach(printItem);
  • 函数作为变量
var printItem = (String name){
   
  print(name)
}
List<String> names = ['Jone','Boe','Sandy'];
name.forEach(printItem);

2.3 运算符

2.3.1 除法、整除、取余运算

num num1 = 8;
print(num1 / 3); // 2.33333…
print(num1 ~/ 3); // 2
print(num1 %3); // 2

2.3.2 三目运算符

  • ??=

JS:exe1 = exe1?exe1:‘children’
dart简化:exe1??=‘children’

  • ??

JS:exe1 = exe1?exe1:‘children’
dart简化:exe1=exe1??‘children’

2.3.3 级联操作符

链式调用,在动画模块使用较多。

class Person{
   
  String name;
  Person(name){
   
    this.name = name;
  }
  void Swim(){
   
    print("$name is in Swim");
  }
  void Eat(){
   
    print(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值