Dart学习

37次阅读
没有评论

声明可以有两种方式,一种是不指定类型,即使用var关键字

var name=’test’;

另一种是明确指定类型(Optional types)

string name=’test’;

在变量类型并不明确的情况下,可以使用dynamic关键字 如:dynamic name = 'Bob';

未初始化的变量默认值是 null

Final 和 Const

使用过程中从来不会被修改的变量, 可以使用 final 或 const,而不是 var 或者其他类型,Final 变量的值只能被设置一次; Const 变量在编译时就已经固定 (Const 变量 是隐式 Final 的类型) 。最高级 final 变量或类变量在第一次使用时被初始化。

内建类型

// String -> int 文字转成int
var one = int.parse('1');
assert(one == 1);

// String -> double 字符串转双精度
var onePointOne = double.parse('1.1');
assert(onePointOne == 1.1);

// int -> String int转成字符串
String oneAsString = 1.toString();
assert(oneAsString == '1');

// double -> String 双精度转字符串并保留2位小数点
String piAsString = 3.14159.toStringAsFixed(2);
assert(piAsString == '3.14');

Dart 的类型安全意味着不能使用 if (nonbooleanValue) 或者 assert (nonbooleanValue)。 而是应该像下面这样,明确的进行值检查:

// 检查空字符串。
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);

是 Set 还是 Map 

在 Dart 中 Set 是一个元素唯一且无序的集合。 Dart 为 Set 提供了 Set 字面量和 Set 类型。

01==》 Set 它的主要功能是去除重复的数组内容;
Set是没有顺序且不能够重复的数组,所以不能够通过索引值去获取内容

var s = new Set();
s.add('苹果x');
s.add('苹果x');
print(s); //{苹果x}
// 将其他的类型转化为数组内容
print(s.toList());//[苹果x]


02===》数组去重
main() {
    var Arr = ['苹果x', '苹果xr', '苹果11', '苹果12', '苹果13'];
    var s = new Set();
    s.add('苹果13');
    s.addAll(Arr);
    print(s.toList()); //[苹果13, 苹果x, 苹果xr, 苹果11, 苹果12]
}
//详细属性:https://blog.csdn.net/syx_1990/article/details/117854685

 Map 是用来关联 keys 和 values 的对象。 keys 和 values 可以是任何类型的对象。在一个 Map 对象中一个 key 只能出现一次。 但是 value 可以出现多次。 Dart 中 Map 通过 Map 字面量 和 Map 类型来实现。

下面是使用 Map 字面量的两个简单例子:

var gifts = {
  // Key:    Value
  'first': 'partridge',
  'second': 'turtledoves',
  'fifth': 'golden rings'
};

var nobleGases = {
  2: 'helium',
  10: 'neon',
  18: 'argon',
};
详细参数:https://www.jianshu.com/p/0c9c0e6a5635

Rune

在 Dart 中, Rune 用来表示字符串中的 UTF-32 编码字符。

Unicode 定义了一个全球的书写系统编码, 系统中使用的所有字母,数字和符号都对应唯一的数值编码。 由于 Dart 字符串是一系列 UTF-16 编码单元, 因此要在字符串中表示32位 Unicode 值需要特殊语法支持。

表示 Unicode 编码的常用方法是, \uXXXX, 这里 XXXX 是一个4位的16进制数。 例如,心形符号 (♥) 是 \u2665。 对于特殊的非 4 个数值的情况, 把编码值放到大括号中即可。 例如,emoji 的笑脸 (�) 是 \u{1f600}。

String 类有一些属性可以获得 rune 数据。 属性 codeUnitAt 和 codeUnit 返回16位编码数据。 属性 runes 获取字符串中的 Rune 。

下面是示例演示了 Rune 、 16-bit code units、 和 32-bit code points 之间的关系。

main() {
  var clapping = '\u{1f44f}';
  print(clapping);
  print(clapping.codeUnits);
  print(clapping.runes.toList());

  Runes input = new Runes(
      '\u2665  \u{1f605}  \u{1f60e}  \u{1f47b}  \u{1f596}  \u{1f44d}');
  print(new String.fromCharCodes(input));
}
正文完