JHHK

欢迎来到我的个人网站
行者常至 为者常成

2 基本类型

目录

有哪些类型

常量:const final

变量:var

布尔类型:bool

数值型:num : int & double

字符串:String

列表:list

键值对:map

常量

int testSum() {
    return 10;
}

// 编译时需要确定常量的值,一旦确定便不能更改
// const int a = testSum();

// int 可以省略,dart会自动推断类型
const a = 10;

// final 是运行时确定常量的值,一旦确定便不能更改
final b = testSum();

// a = 10, b = 10
debugPrint('a = $a, b = $b');

变量

//var声明一个变量
var a = 10;

//变量可以再次赋值
a = 20;

//再次赋值时不能改变类型
// a = 'hello';

// a = 20
debugPrint('a = $a');

布尔

bool isTure = true;
// isTure = true
debugPrint('isTure = $isTure');

//会自动判断类型
var isRight = false;

//查看类型
// type = bool
debugPrint("type = ${isRight.runtimeType}");

//是否是某个类型
// isbl = true
debugPrint("isbl = ${isRight is bool}");

数值

num a = 10;
debugPrint("${a.runtimeType}");//int
debugPrint("${a is int},${a is num}");//true,true

int b = 10;
debugPrint("${b.runtimeType}");//int
debugPrint("${b is int},${b is num}");//true,true

double c = 10;
debugPrint("${c.runtimeType}");//double
debugPrint("${c is double}, ${c is num}, ${c is int}");//true, true, false

字符串

String a = 'hello';
String b = 'flutter';
var c = a + b;
debugPrint('c = $c');// c = helloflutter
debugPrint("${c.runtimeType}");//  String
debugPrint(c[1]);// e

list

//不可变类型
List consta = const [1, 2, 3];
debugPrint("${consta.runtimeType}");// List<dynamic>

// 可变类型
List a = [1, 2, 3];
debugPrint("${a.runtimeType}");// List<dynamic>
debugPrint("${a[1].runtimeType}");// int

//增
a.add(4);
debugPrint('$a');// [1, 2, 3, 4]

//删
a.removeAt(0);
debugPrint('$a');// [2, 3, 4]

//改
a.insert(2, 100);
debugPrint('$a');// [2, 3, 100, 4]

//前闭后开
var suba = a.sublist(1, 3);
debugPrint('$suba');// [3, 100]

//value:当前聚合值,element:列表中的一个元素;
var b = [1, 2, 3];
var reduce = b.reduce((value, element) {
debugPrint('value is $value, element is $element');
return value + element;
});
debugPrint('reduce = $reduce');
// flutter: value is 1, element is 2
// flutter: value is 3, element is 3
// flutter: reduce = 6

//map
var map = b.map((e) {
return e * 3;
});
debugPrint('map = $map');// map = (3, 6, 9)

map

//不可变map
var consta = const {'one': 'hank', 'two': 'tom'};
debugPrint("${consta.runtimeType}");// _ConstMap<String, String>

var a = {'one': 'hank', 'two': 10};
debugPrint("${a.runtimeType}");//  _Map<String, Object>

Map b = {'one': 'hank', 'two': 'tom'};
debugPrint("${b.runtimeType}");//  _Map<dynamic, dynamic>

operator

  // 赋值运算 ??=
  // 条件表达式 ??

  var a ;
  debugPrint('a = $a');// a = null
  debugPrint("${a.runtimeType}"); //Null

  //a 为 null 的时候才会赋值
  a ??= 5; 
  //a 不为 null 的时候直接返回
  a ??= 10; 
  debugPrint('a = $a');// a = 5

  var b = 1;
  var c = b ?? a; // b 不为null 就返回b, b为null就返回a
  debugPrint('c = $c');// c = 1
  debugPrint("${c.runtimeType}");//int

函数

正常书写

int sum(int a, int b) {
    return a + b;
}
debugPrint('sum = ${sum(10, 20)}');

参数类型可以省略

int sum2(a, b) {
    return a + b;
}
debugPrint('sum2 = ${sum2(10, 20)}');

返回值类型可以省略

sum3(a, b) {
    return a + b;
}
debugPrint('sum3 = ${sum3(10, 20)}');

函数体只有一行时可以使用箭头

sum4(a, b) => a + b;
debugPrint('sum4 = ${sum4(10, 20)}');

可选命名参数

int sum5(a, b, {c}) {
    if (c != null) {
        return a + b + c;
    } else {
        return a + b;
    }
}
debugPrint('sum5 = ${sum5(10, 20)}');
debugPrint('sum5 = ${sum5(10, 20, c: 30)}');

可选命名参数的默认值

int sum6(a, b, {c = 0}) {
    return a + b + c;
}
debugPrint('sum6 = ${sum6(10, 20)}');

匿名函数

var func = (a, b) { return a + b;};
var func1 = (a, b) => a + b;
debugPrint('sum7 = ${func(10, 20)}');

立即执行函数

var sum8 = ((a, b) {
    return a + b;
})(10, 20);
debugPrint('sum8 = $sum8');

闭包

Function getConter() {
var count = 0;
int counter() {
    count++;
    return count;
}
return counter;
}

var counter = getConter();
var result = counter();
debugPrint('result = $result');//result = 1
result = counter();
debugPrint('result = $result');//result = 2

行者常至,为者常成!





R
Valine - A simple comment system based on Leancloud.