【Flutter 学习笔记二】Dart 的基础概念和数据类型

在之前把环境折腾好了之后,我们开始打基础功,先把 dart 学好。

dart 这个语言还是比较奇怪的,之前根本没听过(可能是我孤陋寡闻了),据说有人问 flutter 开发者,为什么使用 dart 语言。开发者回答说:”dart 开发组就在我们隔壁,所以我们决定使用 dart” 😭

不过没关系,所有的语言思想都差不多,有经验的入门还是比较简单的。开始进入正题吧~

关于后面 dart ,代码可以在 dartPad 上运行

https://dartpad.dartlang.org/

基本概念

  1. 在 dart 中,所有的东西都是对象,无论是变量,数字或函数,所有的对象都是类的实例,所有的对象都从 Object 类继承
  2. 尽管 dart 是强类型的,但类型申明是可选的,因为 Dart 可以推断出类型,如果要明确的不适用任何类型,请使用特殊类型 dynamic
  3. dart 支持顶级变量的定义
  4. dart 没有 public,protected,private 的概念,如果函数或变量以下划线 _ 开头,则这个函数或变量属于这个包私有

变量与常量

void main() {
    
  // 变量申明
  var name = 'enda';
  
  // 变量默认值为 null
  int lineCount;
  print(lineCount); // null

  // 可以在定义变量时指定变量的类型,通过指定变量类型,可以减少编译和运行时间
  String name = 'enda';
  

  // 常量定义 常量定义就不能修改
  
  final firstName = 'E';
  // 或者申明类型的常量定义
  final int age = 20;
  
  const lastName = 'D';
  
}

数据类型

dart 内置了几种常见的数据类型

  • numbers
  • strings
  • booleans
  • lists (数组)
  • maps
  • runes (用于在字符串中表示 Unicode 字符)
  • symbols

number 类型

number 类型分为 int 和 double

int 的取值范围为 -253 to 253 - 1
double 为 64 位长度的浮点类型

number 常见的操作方位包括: +,-,*,/ 以及位移 >>

int 类型转换

void main() {
    
  // 字符串转 int
  var one = int.parse('1');
  
  assert(one == 1);
  
  // 字符串转浮点
  var onePointOne = double.parse('1.1');
  
  // int 转字符串
  String oneAsString = 1.toString();
  
  // double 转字符串
  String piAsString = 3.14159.toStringAsFixed(2);
  
}

String 类型

可以使用单引号或双引号创建字符串

字符串定义

var str1 = '单引号定义';
  
var str2 = "双引号定义";
  
var str3 = "转义 \'s ";

字符串连接

字符串连接,使用 + 操作符

// 字符串连接可以使用 + 号
  var str4 = str1 +'-'+ str2;

多行字符串

使用 """''' 来定义多行字符串

// 多行字符串
  
var str5 = '''
多行字符串的定义
简单吧
''';

raw 字符串

使用 r 来定义

// 使用 r 修饰,表明是 raw 类型的字符串
var str6 = r"In a raw string, even \n s";

Boolean 类型

bool 类型只有两个值 truefalse
dart 对 bool 值的检查是强类型检查,所以不能和 php 一样去依赖强转检查
我们可以写成下面这样

// 检查是否为空字符串
var fullName = '';
assert(fullName.isEmpty);

// 检查是否为 0
var hitPoints = 0;
assert(hitPoints <= 0);

// 检查是否为 null
var unicorn;
assert(unicorn == null);

// 检查是否为 NaN
var iMeantToDoThis = 0 / 0;
assert(iMeantToDoThis.isNaN);

List 类型

几乎每种语言中最常见的集合可能是数组或有序的对象。在 dart 中,数组是 LIST 对象

定义

var list = [1,2,3];

使用

dart 的 LIST 索引从 0 开始

list[1] = 10;

list.length; // 获取长度

Maps 类型

map 将 key 和 value 关联到一起,key 必须是唯一的

定义

// 第一种定义
var gifts = {
    // key     value
    'first' :  'partridge',
    'second':  'turtledoves'
};

// 第二种定义
var gifts2 = new Map();
gifts2['first'] = 'partridge';

使用

// 获取值
gifts['first'];

// 判断 key 是否存在
assert(gifts['fifth'] == null);

// 获取长度
gifts.length;

Runes 类型

Dart 中 runes 是 UTF-32 字符集的 string 对象。
codeUnitAt 和 codeUnit 用来获取 UTF-16 字符集的字符。
使用runes 来获取 UTF-32 字符集的字符。

Runes input = new Runes(
      '\u2665  \u{1f605}  \u{1f60e}  \u{1f47b}  \u{1f596}  \u{1f44d}');

学习资源

  1. A Tour of the Dart Language
  2. https://www.jianshu.com/p/b21…
  3. 学习交流 QQ 群 (826912082)
    原文作者:enda
    原文地址: https://segmentfault.com/a/1190000015719209
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞