Dart编程语言入门

Dart基础入门语法介绍,详细说明可以查看相关视频《Dart编程语言入门》。

变量与常量

变量

1.使用 var 声明变量,默认值为 null

var a;//null
a = 10;

2.显示类型声明

int a;//null
a = 10;

3.使用 var 声明,可赋予不同类型的值

var a; //null
a = 10; //int
a = "Dart"; //string

4.使用 final 声明只能赋值一次的变量

final a = 30;
a = 10; //Error

常量

使用 const 声明编译期常量

const a = 10;

数据类型

数值型

Dart中使用 num 表示数值型,子类只有两种:int 和 double,分别表示整型和浮点型。
1.使用 num 声明的类型既可以接收整型,也可以接收浮点型;

num a = 10; //int
a = 12.5; //double

2.使用 int 声明整型;

int a = 10;

3.使用 double 声明浮点型

double a = 10.5;

4.常用属性和方法(更多可查看相关api)

int a = 30;
a.isEven;//是否偶数
a.isOdd; //是否奇数
a.abs();// 绝对值
a.toDouble();//转换为浮点型
...int b = 10.5;
b.toInt();//转换为整型
b.round(); //四舍五入,11
b.floor(); //不大于b的最大整数,10
b.ceil(); //不小于b的最小整数,11
...

字符串

Dart中使用 String 表示字符串。
1.使用 单引号 或 双引号 创建字符串;

String str = "Dart";String str = 'Dart';

2.使用 三个单引号 或 三个双引号 创建多行字符串;

String str = '''HelloDart''';String str = """HelloDart""";

3.使用 r 创建原始字符串

String str = r'Hello \n Dart'; // "\n"不会被转义

4.插值表达式
使用 ${ } 表示插件表达式,单个变量可省略 { }。

int a = 1;
int b = 2;
print("a + b = ${a + b}");

5.常用属性和方法(更多可查看相关api)

str.length;//字符串长度
str.isEmpty;//是否为空
...str.contains('xxx');//是否包含xxx
str.substring(0,3);//截取前三个字符
str.startsWith('xxx‘);//是否以xxx开头
str.split(",");//以,分隔字符串,返回数组
...

布尔型

Dart中使用 bool 表示布尔型。布尔型的值只有 true 和 false。

bool isTrue = true;
bool isFalse = false;

List body ol,body ul{margin:0;padding:0;}body .list-paddingleft-1{padding-left:0} body .list-paddingleft-2{padding-left:20px} body .list-paddingleft-3{padding-left:40px}

Dart中使用 List 表示列表,它和数组是同一概念。

1.创建List,使用 const 创建不可变的List

var list = [1, 2, 3];//创建不可变的List
var list = const[1, 2, 3];//使用类创建
var list = new List();

2.常用属性和方法(更多可查看相关api)

  • 获取元素个数
list.length;
  • 判断是否为空
list.isEmpty;list.isNotEmpty;
  • 添加元素
list.add('xxx');list.insert(index,'xxx'); //在下标位置添加元素
  • 删除元素
list.remove('xxx');list.clear(); //清空list
  • 修改元素
list[0] = 'xxx'; //修改下标为0的元素值为xxx
  • 查询元素
list[0];//获取第一个元素,下标从0开始
  • 其它
list.indexOf('xxx');//查询元素xxx,返回下标,不存在返回-1list.sort(); //排序list.subList(start,end);//获取从子列表list.forEach(); //遍历list
...

Map

Dart中使用 Map 表示key-value键值对。

1.创建Map,使用 const 创建不可变的Map

var map = {'first':'Java','second':'Dart'};//创建不可变的Map
var map = {'first':'Java','second':'Dart'};//使用类创建
var map = new Map();

2.常用属性和方法(更多可查看相关api)

  • 获取元素个数
map.length;
  • 判断是否为空
map.isEmpty;map.isNotEmpty;
  • 添加元素
map['third'] = 'JavaScript'; //添加key为thrid,value为JavaScript的元素
  • 删除元素
map.remove('third'); //删除key为third的元素map.clear(); //清空map
  • 修改元素
map['first'] = 'C++'; //修改key为first的value为C++
  • 查询元素
map['first'];//获取key为first的value
  • 其它
map.keys; //获取map所有的keymap.values; //获取map所有的valuemap.containsKey('first'); //map是否包含key为first的元素map.containsValue('Java'); //map是否包含value为Java的元素map.forEach(); //遍历map
...


map相加 .List相加.===========================================>
Map a = {'a':1, 'b':2};
Map b = {'c':3, 'd':4};
// print(a+b);
List c = [1,2,3];
var d = [4,5];
// print(c+d);
a.addAll(b);
print(a);




运算符

Dart中的很多运算符和其它语言是相似的,个别不同用法会详细说明。

算术运算符

  • 加减乘除: + , - , * , / , ~/ , %

“/” 运算符结果为浮点型;
"~/" 运算符为求整,类似Java中的"/";
"%"运算符为求余;

  • 递增递减: ++var , var++ , --var , var–

关系运算符

关系运算符包括:== , != , > , < , >= , <=

"=="运算符只是判断内容是否相同。

逻辑运算符

逻辑运算符包括:! , && , ||

赋值运算符

  • 基础运算符: = , ??=

“??=” 表示左侧变量为空时进行赋值,否则不赋值

int a;
a ??= 5; // a = 5int a = 10;
a ??= 5; //a = 10
  • 复合运算符: *+= , -= , = , /= , %= , ~/=

条件运算符

  • 三目运算符: condition ? expr1 : expr2
  • ??运算符: expr1 ?? expr2

"??"运算符表示如果expr1为null,则使用expr2的结果,否则使用expr1

String a = "Dart";
String b = "Java";
String c = a ?? b; //c = "Dart"String a;
String b = "Java";
String c = a ?? b; //c = "Java"

控制流

if语句

if语句和其它语言类似。

if(condition1){//...if(condition2){//...}
} else if(condition3){//...
} else {//...
}

for语句

var list = [1,2,3,4,5];for(var index = 0;index < list.length;index++){print(list[index]);
}

for…in语句

for(var item in list){print(item);
}

while语句

int count = 0;while(count < 5){print(count++);
} 

do…while语句

do{print(count--);
}while(count > 0 && count < 5);

break和continue

break:终止当前循环;
continue:跳出当前循环,继续下一次循环;

switch语句

switch语句支持num、String、编译期常量、对象和枚举。

switch(language){case "Dart":print("Dart is my favorite");break;case "Java":print("Java is my favorite");break;case "Python":print("Python is my favorite");break;default:print("None");
}

支持使用continue跳转标签:

switch(language){Test:case "Dart":print("Dart is my favorite");break;case "Java":print("Java is my favorite");continue Test;case "Python":print("Python is my favorite");break;default:print("None");
}

assert语句

assert条件表达式为false时会抛出异常。

assert(str != null);

方法

方法声明

返回类型   方法名(参数1,参数2,....){
方法体…
return 返回值 
}
  • 方法也是对象,并且有具体类型Function;
  • 返回值类型、参数类型都可省略;
void printPerson(String name,int age){print("name=$name,age=$age");
}printPerson(name,age){print("name=$name,age=$age");
}
  • 方法都有返回值。如果没有指定返回类型,默认return null最后一句执行;
printPerson(String name,int age){print("name=$name,age=$age");//return null;
}
  • => 语法,适用于方法体只有一个表达式的情况;
printPerson(String name,int age) => print("name=$name,age=$age");

可选参数

  • 可选命名参数,调用时使用名称传值。
printPerson(String name,{int age,String gender}){print("name=$name,age=$age,gender=$gender");
}//方法调用
printPerson("李四",age: 20);
printPerson("李四",age: 20,gender: "Male");
  • 可选位置参数,调用时根据参数位置传递对应类型。
printPerson2(String name,[int age,String gender]){print("name=$name,age=$age,gender=$gender");
}//方法调用 
printPerson2("张三",18);
printPerson2("张三",18,"Female");
  • 如果存在具体参数,可选参数声明,必须在参数后面

默认参数值

在可选参数中可以使用默认参数值,默认参数值必须是编译期常量。

printPerson(String name,{int age = 30,String gender = "Female"}){print("name=$name,age=$age,gender=$gender");
}

方法对象

Dart中一切都对象,包括方法。所以方法也可以作为对象赋值给其它变量,也可以作为参数传递给其它方法。

  • 方法赋值给其它变量
void printHello(){print("Hello");
}Function func = printHello;
func();
  • 方法作为参数传递
//第二参数是一个方法
List listTimes(List list ,String t(str)){for(var index = 0;index < list.length;index++){list[index] = t(list[index]);}return list;
}String times(str){return str*3;
}//方法作为参数调用
var list2 = ["h","e","l","l","o"];
print(listTimes(list2, times));

匿名方法

匿名方法没有具体的名称,和方法有相同的特性,也是对象,也可作为变量赋值和参数传递。

  • 匿名方法声明
(参数1,参数2,….){
方法体…
return 返回值 
}
  • 匿名方法赋值
var func = (str){print("Hello---$str");
};func(30);
  • 匿名方法作为参数
List listTimes(List list ,String times(str)){for(var index = 0;index < list.length;index++){list[index] = times(list[index]);}return list;
}//使用匿名方法传递参数
var result = listTimes(list2, (str){ return str * 3;});

闭包

  • 闭包是一个方法(对象);
  • 闭包定义在其它方法内部;
  • 闭包能够访问外部方法内的局部变量,并持有其状态
//该方法返回一个闭包
a(){int count = 0;return (){print(count++);};
}//闭包的调用可以访问局部变量count
var func = a();
func();
func();
func();
func();

 

转载于:https://www.cnblogs.com/pythonClub/p/10557276.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/394725.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《PHP精粹:编写高效PHP代码》——1.1节为什么要使用面向对象编程

本节书摘来自华章社区《PHP精粹&#xff1a;编写高效PHP代码》一书中的第1章&#xff0c;第1.1节为什么要使用面向对象编程&#xff0c;作者&#xff1a;&#xff08;美&#xff09;  Davey Shafik&#xff0c;更多章节内容可以访问云栖社区“华章社区”公众号查看 1.1 为什…

c语言数据结构系统化,C语言数据结构+数据库+操作系统

http://cv.qiaobutang.com/post/55c419b20cf2009bd4607795第二部分是专业相关的C &#xff0c;数据库&#xff0c;操作系统&#xff0c;数据结构。http://c.biancheng.net/cpp/u/shuju/数据(Data)是信息的载体&#xff0c;它能够被计算机识别、存储和加工处理。它是计算机程序加…

c语言判断一个序列是不是另一个的子序列

1 #include <stdio.h>2 #include <string.h>//添加字符串头文件3 4 int Subsequence(char s[], char t[]) 5 {6 int m,n,i,j;7 n strlen(s); //n表示序列S的长度8 m strlen(t); //m表示序列T的长度9 i0; 10 j0; 11 if (m>…

linux中python如何调用matlab的数据_特征锦囊:如何在Python中处理不平衡数据

今日锦囊特征锦囊&#xff1a;如何在Python中处理不平衡数据? Index1、到底什么是不平衡数据2、处理不平衡数据的理论方法3、Python里有什么包可以处理不平衡样本4、Python中具体如何处理失衡样本印象中很久之前有位朋友说要我写一篇如何处理不平衡数据的文章&#xff0c;整理…

源码安装zabbix遇到的报错集锦

报错1&#xff1a;checking for mysql_config... configure: error: MySQL library not found 解决办法&#xff1a;查找mysql_config #find / -name "mysql_config*" /usr/local/mysql/bin/mysql_config 在配置时将原有的 --with-mysql 改为 --with-mysql/usr/loca…

pso算法c++语言代码,一C++PSO(PSO)算法

收集和变化PSO算法&#xff0c;它可用于参考实施&#xff1a;#include #include #include #include #include #define rand_01 ((float)rand() / (float)RAND_MAX)const int numofdims 30;const int numofparticles 50;using namespace std;//typedef void (*FitnessFunc)(fl…

Hadoop不适合哪些场景 哪些场景适合?

Hadoop设计的目的主要包括下面几个方面&#xff0c;也就是所谓的适用场景&#xff1a; 1&#xff1a;超大文件 可以是几百M&#xff0c;几百T这个级别的文件。 2&#xff1a;流式数据访问 Hadoop适用于一次写入&#xff0c;多次读取的场景&#xff0c;也就是数据复制进去之后&a…

微服务 边界服务_遵循这些实用原则以获取精心设计的微服务边界

微服务 边界服务by Jake Lumetta杰克卢米塔(Jake Lumetta) 遵循这些实用原则以获取精心设计的微服务边界 (Follow these practical principles to get well-designed microservices boundaries) 如何避免使微服务太小和紧密耦合 (How to avoid making your microservices too …

ShareEntryActivity java.lang.ClassNotFoundException | Android类找不到问题

错误堆栈&#xff1a; Process: com.mci.smagazine, PID: 23265java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.mci.smagazine/com.mci.smagazine.apshare.ShareEntryActivity}: java.lang.ClassNotFoundException: com.mci.smagazine.apshare…

阿里Android p6准备,项目经历准备篇——如何准备阿里巴巴P6/P7前端面试

项目经历准备篇——如何准备阿里巴巴P6/P7前端面试在上次的校招文章之后&#xff0c;有很多同学问有没有社招相关的东西可以写一篇&#xff0c;现在它来了。比起校招&#xff0c;社招更加看重项目经历项目经历反应的思考。本文针对的是想进入阿里的P6/P7同学&#xff0c;着重讲…

for in for of区别_Python 第4课:for…in循环黄金搭档之range()函数

乐学趣学Py● 04&#xff1a;for…in循环黄金搭档之range()函数●Python趣味小百科Python中的绘图模块为什么叫Turtle海龟&#xff0c;而不是cat ,dog,bird呢&#xff1f;原来Python引用了麻省理工大学教授开发的logo海龟制图语言,能通过绘图直观地教大家学习编程。实践是最好的…

《游戏设计师修炼之道:数据驱动的游戏设计》一3.8小结

3.8小结 在玩游戏期间使用的数学知识通常相当简单&#xff0c;尽管代码中使用的数学知识可能非常复杂。玩家不希望由于在玩游戏期间不得不处理许多数字而分心&#xff0c;因为他们的大脑必须从控制角色的动作转换到记住数字的含义。许多游戏回避了数字&#xff0c;而是通过像计…

ubuntu下安装配置nfs

sudo apt-get install nfs-kernel-server sudo /nfs_root vim /etc/exports 在这个文件末尾添加 /nfs_root *(rw,sync,no_root_squash) 保存退出 重启nfs服务 sudo /etc/init.d/rpcbind restart sudo /etc/init.d/nfs-kernel-server restart 测试 sudo mount 192.168.2.1:/nf…

使命愿景价值观_为什么在制作产品时应该专注于愿景,价值,风险和先例

使命愿景价值观by Steve史蒂夫(Steve) 为什么在制作产品时应该专注于愿景&#xff0c;价值&#xff0c;风险和先例 (Why you should focus on vision, value, risk, and precedent when making your product) 几周前&#xff0c;产品开发人员John Cutler发表了一篇出色的文章&…

安卓前端布局Android,Android开发的几种常见布局

目前正在从事iOS开发&#xff0c;对于安卓就是大学的时候自学了点&#xff0c;做过几个小的项目&#xff0c;软件外包大赛、计算机设计大赛、移动应用大赛都拿过奖项&#xff0c;呵呵。。。现在回想起来以前大学做的安卓比赛是多么的幼稚。 从现在开始我要从头一步一步回顾安卓…

《Cocos2D权威指南》——3.9 本章小结

3.9 本章小结 本章对Cocos2D中的几个核心类&#xff08;CCNode、CCScene、CCLayer、CCSprite&#xff09;进行了详细介绍&#xff0c;并且通过节点层级图让大家了解到Cocos2D游戏的基本组成&#xff1b;然后介绍了Cocos2D中的单例。通过完善第2章的游戏实例&#xff0c;大家对…

永恒python图片_python 数据词云展示实例(3)- 背景图设置

记录wordcloud库背景图的设置及样板 之前介绍了wordcloud的基本使用wordcloud的基本使用&#xff0c;本文记录一下如何设置背景图。 样图 背景图tim.jpg 生成样图dream.png 样板 from PIL import Image,ImageSequence image Image.open(tim.jpg)#打开背景图 graph np.array(im…

创造的快乐

早上9点半到的图书馆&#xff0c;十点左右才进入状态&#xff0c;上午和下午的一半时间都用来看AMD的GCN架构&#xff0c;看这种官方的文档&#xff0c;和论文一样&#xff0c;只看摘要和图片&#xff0c;没有死磕的精神&#xff0c;很难有收获&#xff0c;结果就是&#xff0c…

python心得-基本概念2

一 编程语言介绍 1.1 机器语言&#xff1a;直接用计算机能理解的二进制指令编写程序&#xff0c;直接控制硬件 1.2 汇编语言&#xff1a;用英文标签取代二进制指令取编写程序&#xff0c;本质也是在直接控制硬件 1.3 高级语言&#xff1a;用人能理解的表达方式去编写程序&#…

初创团队最重要的是什么_我从一家出色的初创公司工作中学到的最重要的教训...

初创团队最重要的是什么by Yan Cui崔燕 我从一家出色的初创公司工作中学到的最重要的教训 (The most important lessons I learned from working at an amazing startup) I recently left Space Ape Games after a wonderful year. I learnt a lot, and worked on some challe…