Flutter中Dart语言概述

访客5年前黑客工具1292

Dart语言与其他语言事实有什么差别呢?在已有的编程语言履历的基础上,我们该若何快速上手呢?本篇文章从编程语言中最主要的组成部分,也就是基础语法与类型变量出发,一起来学习Dart吧


一、Dart语言之初体验

Dart可以在编译器(Android Studio)、下令行(条件是安装了Dart SDK)及网页repl.it中调试编译,由于本次内容对照简朴,我们直接在网页中调试编译即可。

我们界说一个输出当前时间的函数,并输出当前时间

//输出当前时间
void nowTime() {
  int year = DateTime.now().year;
  int month = DateTime.now().month;
  int day = DateTime.now().day;
  int hour = DateTime.now().hour;
  int minute = DateTime.now().minute;
  int second = DateTime.now().second;
  String str = 'Hello World, This is $year-$month-$day $hour:$minute:$second';
  print(str);
}

和绝大多数其他语言一样,Dart要求以main函数作为执行的入口,我们再界说main函数,并将输出那时时间的函数放入main函数中

void main() {
	nowTime();
}

点击“run”按钮,下令就会输出

Hello World, This is 2019-8-11 10:45:46

我们已经可以简朴的运行Dart代码了,我们接下来再看一下Dart的基本变量类型


二、Dart的变量与类型

在Dart中,所有的变量都可以用var来声名,固然,也可以指定详细的类型来声名一个变量。当使用var声名变量时,示意类型是交由编译器推断决议的。虽然Dart支持用var来声名变量,但我照样建议使用详细的类型来声名变量,这样编辑器和编译器就能使用这些详细的类型,向你提供代码补全或编译告警的提醒了。

注重:在默认情况下,所有未初始化的变量值都是null,因此,我们判断变量是否初始化时只用和null对照即可。

Dart是类型平安的语言,而且所有类型都是工具类型,都继续自顶层类型Object,因此一切变量的值都是累的实例(即工具),其中包罗数字、布尔值、函数和null也都是继续自Object工具。

Dart内置了一些基本类型,如num、bool、String、List及Map。


num、bool及String

num、bool及String基本上是编程语言中最常用的类型

Dart的数值类型num只有两种子类:int(整数类型)和double(浮点类型)

void numVerb() {
  int x = 100;
  double y = 5.2;
  double xy=x*y;
  int roundY = xy.round();
  print('x = $x, y = $y, xy = $xy, roundY = $roundY');
}
x = 100, y = 5.2, xy = 520.0, roundY = 520

除了常见的基本运算符(好比:+、-、*、/,以及位运算符)外,还能使用继续自num的abs()、round()等方式来实现求绝对值、取整等功能。

Dart的布尔类型bool也只有两种取值:true和false,他们都是编译时常量。 Dart是类型平安的,因此我们需要显示的检查值

void checkValue() {
  bool isTrue = true;
  assert(isTrue == true);
  //assert(isTrue);//错误
}

Dart的String由UTF-16de字符串组成,界说字符串时我们既能使用单引号也能使用双引号,而且还能在字符串中嵌入变量或表达式(可以使用${express}把一个表达式的值放进字符串,而若是是一个标识符,则可以省略{})。

/**
 * 将一个字符串中的字母所有转换为大写
 */
void upperCase() {
  String str = 'toUpperCase';
  String str2 = "toUpperCase";
  String str3 = 'str = $str, str2 = $str2, str to upperCase: ${str.toUpperCase()}';
  print(str3);
}
str = toUpperCase, str2 = toUpperCase, str to upperCase: TOUPPERCASE

为了获得内嵌工具的字符串,Dart会挪用工具的toString()方式,而常见字符串的拼接,Dart则通过内置运算符“+”实现。

void stringVerb() {
  int year = DateTime.now().year;
  int month = DateTime.now().month;
  int day = DateTime.now().day;
  int hour = DateTime.now().hour;
  int minute = DateTime.now().minute;
  int second = DateTime.now().second;
  String str = 'Hello World, This is ' +
      year.toString() +
      '-' +
      month.toString() +
      '-' +
      day.toString() +
      ' ' +
      hour.toString() +
      ':' +
      minute.toString() +
      ':' +
      second.toString();
  print(str);
}
Hello World, This is 2019-8-11 12:19:31

对于多行字符串对的构建,你可以通过三个单引号或三个双引号的方式声名

void stringVerb() {
  int year = DateTime.now().year;
  int month = DateTime.now().month;
  int day = DateTime.now().day;
  int hour = DateTime.now().hour;
  int minute = DateTime.now().minute;
  int second = DateTime.now().second;
  String str = """Hello World, This is
  $year-$month-$day $hour:$minute:$second""";
  print(str);

  String str2 = '''Hello World, This is
  $year-$month-$day $hour:$minute:$second''';
  print(str2);
}
Hello World, This is
  2019-8-11 12:32:5
Hello World, This is
  2019-8-11 12:32:5


List和Map

List和Map划分对应其他编程语言中的数组和字典类型,统称为聚集类型

void listTest() {
  List<String> arr1 = ['name', 'age', 'sex'];
  for (var value in arr1) {
    print(value);
  }
  List<int> aar2 = List.of([1, 2, 3]);
  aar2.add(4);
  for (var value2 in aar2) {
    print(value2);
  }
  List<num> nums = new List<num>();
  nums.add(1);
  nums.add(1.1);
  nums.add(3);
  nums.add(5.20);
  for (var value3 in nums) {
    print(value3);
  }
}
name
age
sex
1
2
3
4
1
1.1
3
5.2

如上代码所示,我们声名并初始化了三个List变量,并挪用其各自的迭代方式依次打印出其内部米素

void mapTest() {
  Map<String, String> map = {'name': 'Jack', 'age': '18', 'sex': '男'};
  map['name'] = 'Tom';
  map['age'] = '20';
  map['sex'] = '男';
  map.forEach((k, v) => print('$k:$v'));

  Map map2=new Map<String,String>();
  map2['name']='Dart';
  map2['age']='2';
  map2.forEach((k,v)=>print('$k:$v'));
}
name:Tom
age:20
sex:男
name:Dart
age:2

如上代码所示,我们声名并初始化了两个Map变量,同样挪用其各自的迭代方式依次打印出其内部的米素


界说常量

若是你想界说不能变的变量,则需要在界说前加上final或const关键字

const:示意变量在编译时代既能确定的值

final:示意变量可以在运行时确定值,但一旦确定后就不能改变

const与final区别:在界说const常量时,必须直接赋值,且只能是一个固定值,不能为一个变量或公式;在界说final常量时,可以赋值也可以不赋值,赋值时可以赋值为一个固定值,也可以赋值为一个变量或公式,但一旦赋值后就不能再改变


思源资源网:分类流动

1.阿里云: 本站现在使用的是阿里云主机,平安/可靠/稳固。点击领取2000米代金券、领会最新阿里云产物的种种优惠流动点击进入

相关文章

如何监控微信聊天记录内容?黑客怎么同步监控手

BlueTalon首席执行官Eric Tilenius表示,该公司创立之初原本只是针对当时新兴的数据系统Hadoop提供数据治理功能,有监于客户希望可支持更多的数据库,使得他们日益茁壮,打造了支持...

家装知识科普:辽宁品牌抽油烟机价格是多少

相信现在有很多的朋友们对于辽宁品牌抽油烟机价格是多少都想要了解吧,那么今天小编就来给大家针对辽宁品牌抽油烟机价格是多少进行一个介绍吧,希望小编介绍的内容能够为大家起到帮助哦 以下品牌仅供参考,自已根据...

换了新手机微信记录是否可以恢复「暧昧聊天记录被老公发现」

换了新手机微信记录是否可以恢复「暧昧聊天记录被老公发现」

  原标题:换了新手机,怎么恢复微信聊天记录?   今天我们邀请到了果师兄数据恢复团队的工程师,为我们针对数据恢复过程中常见的案例进行分析讲解,告诉我们什么样的情况下微信聊天记录是可以恢复的,如何保...

2018养鸡赚钱吗?利润是多少?

2018养鸡赚钱吗?利润是多少?

新增条例一:征收环保税 国家已经正式公布,从2018年1月1日起,我国将开始正式施行《环境保护税法》,税法中明确指出,今后国家将进行“谁污染,谁收费”的原则,所以各位养殖户们可以定得注意了,!从...

查宾馆入住记录查询app,天下酒店入住查询系统

沒有法律法规的密文的要求宾馆开房的纪录储存限期,他人也不可以随便查看。凭证格林豪泰旅店餐厅经营规模及其立案方式,一样平常会保留起来。查宾馆搬入查询纪录app,全国各地旅店餐厅搬入查询系统由于快捷旅店...

黑客用什么软件查别人资料的(黑客郭盛华个人资料)-黑客代码教程最简单入侵电脑方式

黑客用什么软件查别人资料的(黑客郭盛华个人资料)-黑客代码教程最简单入侵电脑方式

黑客用什么软件查别人资料的(黑客郭盛华个人资料)(tiechemo.com)一直致力于黑客(HACK)技术、黑客QQ群、信息安全、web安全、渗透运维、黑客工具、找黑客、黑客联系方式、24小时在线网络...