Dart 变量,类型,异常

void main() {

  //const与final 都不可更改,const是编译器常量,final是运行时常量

  const cc = 100;

  final ff = 100;

  final fff = cc;

  //错误 编译器流程在前,此时ff未赋值

  // const ccc = ff;

  // var

  //1 var 初始化为String ,不能改为int

  var a = "ss";

  // a = 10;

  //2 var 不进行初始化,

  var b;

  b = "ss";

  b = 100;

  //Object 父类,任意改变

  Object c = "ss";

  c = 100;

  //dynamic 写法与Object 一致,但是编译器不会进行检测,Object类型确定编译器会检测

  dynamic d = "ss";

  d = 100;

  //没有改方法编译器不报错

  // d.foo();

  //int 会根据赋值给不同的内存大小,跟java的4个确定字节不一样

  int e = 1;

  // e.bitLength = 1;

  e = 10;

  // e.bitLength = 4;

  //String使用跟kotlin一致

  String f = "ss";

  f = "ss$f";

  f = """

  aaa

  bbb

  ccc

  """;

  //r 原始类型 raw 下面的效果是一样的

  // f = r"\n" == "\\n";

  //bool

  bool g = true;

  //List 数组

  List<int> h = List();

  h = [1, 2, 3];

  h.forEach((element) {

    print(element);

  });

  for (var value in h) {

    print(value);

  }

  for (var i = 0; i < h.length; i++) {

    print(i);

  }

  //数组与const

  const List<int> j = [1, 2, 3];

  //不行

  // j.add(4);

  // j = [1];

  List<int> jj = const [1, 2, 3];

  //不行,报错 const定位的是内存空间已不能修改

  // jj.add(4);

  // jj[2] = 2;

  jj = [1];

  //map 集合 const 与 list 一样

  Map<int, int> map = {1: 1, 2: 2};

  //修改

  map[1] = 2;

  //添加

  map[3] = 3;

  //null

  print(map[4]);

  map.forEach((key, value) {});

  map.keys.forEach((element) {});

  map.values.forEach((element) {});

  //Runes 特殊字符标识类 Unicode32

  var clapping = '\u{8F8F1}';

  ///5个16进制 需要使用{}

  print(clapping); //👏

//获得 16位代码单元

  print(clapping.codeUnits); //[55357, 56399]

//获得unicode代码

  print(clapping.runes.toList()); //[128079]

//fromCharCode 根据字符码创建字符串

  print(String.fromCharCode(128079));

  print(String.fromCharCodes(clapping.runes));

  print(String.fromCharCodes([55357, 56399]));

  print(String.fromCharCode(0x1f44f));

  Runes input = new Runes(

      '\u2665  \u{1f605}  \u{1f60e}  \u{1f47b}  \u{1f596}  \u{1f44d}');

  print(String.fromCharCodes(input));

  /**

  * Symbols 标识符

  */

  var aa = #sadsad;

  switch (aa) {

    case #A:

      break;

    case #sadsad:

      break;

  }

  //操作符 as 强转

  num q = 10;

  int w = q as int;

  // is 判断是什么类型 is!

  bool ee = q is! int;

  //赋值 += /= 等

  // ??=

  // k==null 的时候赋值

  var k;

  k ??= "11";

  //三目表达式可以使用 if(true)?true:false

  //条件表达式 k ==null v = 789 否则 v=k

  var v = k ?? "789";

  /**

  * 级联操作符 双点 ..

  */

  Build()

    ..a()

    ..b();

  Build().c().d();

  /**

  * ?. 安全操作符 跟kotlin一样

  */

  String str;

  str?.length;

  //方法 一等对象方法

  //所有的方法都是对象,可以赋值给Function变量 Function不能知道方法的参数,类型,返回等

  Function function = fun;

  //参数不匹配

  //function((int i,int j){});

  //参数为匿名方法,闭包等名字

  fun2((i, j) {});

}

void fun(Function f) {

  f();

}

//定义F类型

typedef void F(int i, int j);

//写起来很麻烦

void fun1(F f) {

  f(1, 1);

}

void fun2(void f(int i, int j)) {

  f(1, 1);

}

class Build {

  void a() {}

  void b() {}

  Build c() {

    return this;

  }

  Build d() {

    return this;

  }

}

//回调类不用写了,直接使用方法为参数

typedef void onClick();

class Button {

  void setOnClickListener(onClick listener) {

    listener();

  }

}

//可选位置参数

void main2() {

  fun3();

  fun3(1);

  fun3(1, 2);

  fun4();

  fun4(i: 1, j: 2);

  fun4(j: 2, i: 4);

}

//[] 可选位置参数 ,可以设置默认值,要按顺序传值

void fun3([int i = 1, int j = 2]) {}

//{} 可选命名参数,可以设置默认值,可以按名字传值

void fun4({int i = 1, int j = 2}) {}

//异常

void main3() {

  try {

    test();

  } catch (e,s) {

    //可以只有一个 e

    //e,就是抛出的异常对象

    print(e.runtimeType);

    //s,是stacktrace 调用栈信息

    print(s.runtimeType);

  }

  //捕获指定异常 on

  try{

    test();

  }on Exception catch(e){

  }on String catch(e){

  }finally{

  }

}

void test() {

  // throw Exception("exception");

  throw "exception";

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容