Dart 语言学习笔记


注释

Dart 的单行注释也是 // ,注释内容最好是个完整的句子,通常以大写字母开头,以句点或其他标点符号结束:

// Not if there is nothing before it.
if (_chunks.isEmpty) return false;

/* ... */ 只适合用来注掉某一段暂时不用的代码,不适合当成注释使用。
/// 是 Dart 推荐使用的文档注释语法,dartdoc 会根据文档注释生成 HTML 文档,使用方括号可以链接到一个类、方法、字段等位置:

/// Feeds your llama [Food].
///
/// The typical llama eats one bale of hay per week.
void feed(Food food) {
// …
}

由于历史原因, Dart 也支持 JavaDoc 样式的文档注释 /** ... */,但这种类型的文档注释会产生两个无实际内容的行,对于使用 * 标志列表项等场景并不方便,所以推荐使用 /// 文档注释。

变量

可以赋值给变量的都是对象,包括数字、函数和 null 对象,对象都是类的实例,都继承自 Object
变量存的是引用。
虽然 Dart 是强类型语言,但是类型声明是可选的,因为 Dart 可以推断出变量究竟是什么类型的。
可以使用 var 关键字声明变量而无需指定具体类型,如 var name = 'Bob';var number = 42;
有些操作需要处理任何可能的对象,如 log() 方法需要调用给定对象的 toString()。而在 Dart 中有两种类型: ObjectdynamicObject 适合表示可以是任何对象的场景,而 dynamic 适合表示更复杂的类型,如意味着 Dart 的类型系统已经不足以表示的一系列允许的类型,或者值来自 interop 或 其他超过静态类型系统范围的类型,或者你想明确地声明运行时动态处理的变量:

void log(Object object) {
print(object.toString());
}

/// Returns a Boolean representation for [arg], which must
/// be a String or bool.
bool convertToBool(dynamic arg) {
if (arg is bool) return arg;
if (arg is String) return arg == ‘true’;
throw new ArgumentError(‘Cannot convert $arg to a bool.’);
}

final 和 const

如果变量永远不会改变,可以使用 finalconst 去声明,final 变量只能赋值一次,const 变量是编译时常量(也是隐式 final 的),final 的顶级类变量是在其第一次被使用时初始化的。实例变量可以是 final 的,但不能是 const 的。
const 不单能声明常量,还可以创建常量值,或者声明可以创建常量值的构造器。

内置的类型

num 类型有两个子类型 intdoubleint 型位数不超过64位,在 Dart VM 上是 -263 到 263 - 1,double 是64位浮点数,遵循 IEEE 754 标准。
String 类型是 UTF-16 编码,可以使用单引号也可以使用双引号,因此可以灵活的避免字符串限定符。可以利用 ${expression} 在字符串中使用表达式的值,如果表达式是个标识符,那么 {} 可以省略。字符串拼接可以使用紧邻的字符串或者 + 号:

var s1 = 'String ’
‘concatenation’
" works even over line breaks.";
var s2 = 'The + operator ’ + ‘works, as well.’;

多行的字符串可以使用三个单引号或三个双引号包裹。 可以使用前缀 r 创建原始字符串:

// 在原始字符串中,即使是 \n 也不再是特殊字符了
var s = r"In a raw string, even \n isn’t special.";

Dart 的集合 API 包含 lists, sets, 和 maps。List 可以使用传统构造器创建,也可以使用 [] 语法创建,Map 可以使用传统构造器创建,也可以使用 {} 语法创建:

// Use a List constructor.
var vegetables = new List();
// Or simply use a list literal.
var fruits = [‘apples’, ‘oranges’];
// Maps can be built from a constructor.
var searchTerms = new Map();
// Maps often use strings as keys.
var hawaiianBeaches = {
‘Oahu’: [‘Waikiki’, ‘Kailua’, ‘Waimanalo’],
‘Big Island’: [‘Wailea Bay’, ‘Pololu Beach’],
‘Kauai’: [‘Hanalei’, ‘Poipu’]
};

ListSet 都实现了 Iterable,可以通过迭代器去遍历,而 Map 可以通过它的keysvalues 属性获取迭代器。

  • 26
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值