一、几个基本概念

  • dart语言风格和C语言类似,而且dart是面向对象的语言。需要重点关注的是:Dart中所有的变量都是对象。甚至整数、函数(function类)、null也看做是对象。所有的对象都继承于Object类
  • Dart是强类型语言(程序中表达的任何对象所从属的类型都必须能在编译时刻确定
    )。 Dart可以推断出变量的类型,所以变量的类型指定不一定要标明。如果你想明确表示这个变量不想被任何一个类型指定,那就使用特殊类型dynamic来表示。
  • Dart语言支持通用类型,比如List<int>表示整数集列表,List<dynamic>表示元素集为任意类型对象的列表
  • Dart支持顶级函数(如main()),以及绑定到类或对象的函数(分别是静态方法和实例方法)。您还可以在函数中创建函数(嵌套函数或本地函数)。
  • Dart支持顶级变量,以及绑定到类或对象(静态和实例变量)的变量。实例变量有时称为字段或属性
  • 与OC不同的是,dart语言中没有public、protected和private这些关键字。但是在dart里面,以下划线开头的变量自动识别为私有变量
  • dart中也有assert函数,但是assert(bool)中不为true时才会崩溃
  • 常量的表示除了const修饰之外(编译时常量),还可以用final修饰变量,意思为只能赋值一次的变量
  • function是对象,所以可以赋值给变量,也可以当做其他方法的参数(???)
  • 所有的函数都返回一个值。如果没有指定返回值,则 默认把语句 return null; 作为函数的最后一个语句执行。

二、基础数据类型

num和string相互转换
// String -> int
var one = int.parse('1');
assert(one == 1);// String -> double
var onePointOne = double.parse('1.1');
assert(onePointOne == 1.1);// int -> String
String oneAsString = 1.toString();
assert(oneAsString == '1');// double -> String
String piAsString = 3.14159.toStringAsFixed(2);
assert(piAsString == '3.14');
```
######字符串单双引号的使用

// 双引号和单引号可以相互替代,没有区别
var string1 = "caoxiaokang";
print(string1);

// 三引号支持换行
String multibleLineString = '''hello
world''';
String singleLineString = "caoxk";

// 使用+拼接字符串
print(multibleLineString + "\n" + singleLineString);

// 相连字符串直接拼接
var newString = "hello" 'world';
print(newString); // helloworld

// multibleLineString" + "\n" + "$singleLineString";
print(string);

输出:

[Running] dart "/Users/caoxk/Demo/dart/main.dart"
caoxiaokang
hello
world
caoxk
helloworld
hello
world
caoxk

三、特殊数据类型

数组:List

字典:Map

Unicode:Runes

标志符:Symbols


四、函数

1.函数的基本格式
2.函数的缩写
isNoble(atomicNumber) {return _nobleGases[atomicNumber] != null;
}

对于只有一个表达式的方法,你可以选择 使用缩写语法来定义:

bool isNoble(int atomicNumber) => _nobleGases[atomicNumber] != null;

这个 => *expr* 语法是 { return *expr*; } 形式的缩写。=> 形式 有时候也称之为 胖箭头 语法。

注意:在箭头 (=>) 和冒号 (;) 之间只能使用一个 表达式 – 不能使用 语句。 例如:你不能使用 if statement,但是可以 使用条件表达式 conditional expression。

3.函数当做参数传递

代码:

// function 也是对象,是function类
var func = (message) => '!!!${message.toUpperCase()}!!!';
var result = func('hello'); //断点打在此处
print(result);

控制台中打印func变量:

func
Closure: (dynamic) => String
call:Closure
hashCode:236919621
runtimeType:Type ((dynamic) => String)

func在runtime中的类型是:参数为dynamic,返回值为String

备注:
这里如果将参数'hello'改成int类型的1,则会运行出错,报错类似于OC中的找不到方法的错误

可选命名参数

可选命名参数的意思是在定义函数时,可以指定参数的名字。这样做的好处是使得函数易于理解,可读性强。
使用方法:

type funcName({type param1, type param2}) {
......
};

举个

Dart教程(二):基本语法相关推荐

  1. 正则表达式--教程二(语法)

    正则表达式--教程一 简介(共三篇):https://blog.csdn.net/alzzw/article/details/99463959 正则表达式--教程三(匹配规则及示例):https:// ...

  2. React教程(二)——jsx语法、条件渲染、列表渲染

    1.JSX 语法 在react中,就是使用jsx的语法,来实现DOM元素的展示.一个基本的jsx语法的react模板如下: <div>{this.props.title}</div& ...

  3. 区块链教程(二):基础概念介绍

    注:本教程为技术教程,不谈论且不涉及炒作任何数字货币 本系列重点在于以太坊基础知识.以太坊客户端以及以太坊solidity编程,因此博客重点在于以太坊核心知识点的掌握,区块链部分的基础知识可以作为补充 ...

  4. Homebrew进阶使用教程(二)-用一个命令行天气客户端构建自己的仓库

    [homebrew 系列文章] HomeBrew常规使用教程 Homebrew进阶使用教程(一) Homebrew进阶使用教程(二)-用一个命令行天气客户端构建自己的仓库 Homebrew进阶使用教程 ...

  5. 动画骨骼【Visual C++】游戏开发五十二 浅墨DirectX教程二十 骨骼动画来袭(一)...

    间时紧张,先记一笔,后续优化与完善. 本系列文章由zhmxy555(毛星云)编写,载转请注明出处. 文章链接: http://blog.csdn.net/zhmxy555/article/detail ...

  6. Dart语言(一)--基础语法

    一.Dart基本特色概念 所有变量的值都是对象,也就是类的实例.数字.函数和null也都是对象,都继承自Object类. 虽然Dart是强类型语言,但Dart支持类型推断,显示变量类型声明是可选的.没 ...

  7. Hbase教程(二) Hbase数据库Shell命令

    Hbase教程(二) Hbase数据库Shell命令 1 Hbase- Shell命令 Hbase是分布式是一个分布式的.面向列的开源数据库,Hbase也提供了Shell命令对数据库增.删.改.查的权 ...

  8. 【Visual C++】游戏开发五十二 浅墨DirectX教程二十 骨骼动画来袭(一)

    这是答应大家的讲解骨骼动画的文章的N部曲的第二篇.这篇文章里,我们对现行的三种模型动画技术进行了概述,然后对X文件构成进行了详细的剖析,最后放出了骨骼动画的第一个示例程序,载入了<诛仙>中 ...

  9. 【Visual C++】游戏开发五十二 浅墨DirectX教程二十 骨骼动画来袭(一)

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhmxy555/article/details/8832812 作者:毛星云(浅墨 ...

  10. 【Dart 教程系列第 28 篇】Dart中的 Map 和实体类的相互转换

    这是[Dart 教程系列第 28 篇],如果觉得有用的话,欢迎关注专栏. 首先声明一个实体类 class People {String name; // 姓名String area; // 地区Str ...

最新文章

  1. portal商品展示功能逻辑
  2. MySQL之运算符和函数
  3. python格式化字符串漏洞_Python新型字符串格式漏洞分析及解决方案
  4. MySQL数据库服务器逐渐变慢 该如何分析与解决
  5. 【Python入门】Python 63个内置函数超级详解
  6. 日志间隔_在日志中搜索时间间隔
  7. 菜鸟postman接口测试_postman 接口测试(转)
  8. shell中注释一段代码的方法
  9. 03-mysql的相关命令-启动与关闭服务-配置环境变量
  10. 数行代码训练视频模型,PyTorch视频理解利器出炉
  11. 系统学习 TypeScript(三)——基础类型
  12. c调用python函数_python - Linux C调用Python 函数
  13. mysql 数据库和表的增删改查
  14. ios开发常用RGB色值
  15. Ubuntu 锁屏后键盘无法输入密码
  16. 码流、单码流、双码流、多码流
  17. 富途证券面试整理--前端
  18. 已知分布函数求概率密度例题_高中数学必修一函数知识点总结
  19. BZOJ4833: [Lydsy1704月赛]最小公倍佩尔数
  20. 四步学习Meta标签

热门文章

  1. Spring IOC源码笔记(三)
  2. 并发编程学习之线程池工作原理
  3. Map集合之ConcurrentHashMap
  4. 在 windows 下安装 Boost 1.62.0
  5. cisco 以太通道(端口聚合)配置样例
  6. 在Linux环境下select函数的初体验
  7. HDOJ_ACM_统计问题
  8. 十年Java面向对象编程心路——函数与方法的概念区别
  9. 在 java 中_关于final 关键字,在Java中,关于final关键字的说法正确的是()
  10. Luogu3431 [POI2005]AUT-The Bus