关于Dart的一些知识点

简介: 关于Dart的一些知识点

$符号

Dart 中可以在字符串通过$variableName或 ${expression} 语法插入变量,类似shell脚本

例如

var s = "hello";
print('${s}, world!');
//可以简化成:
print('$s, world!');
//调用方法
print('${s.toUpperCase()}, world!');

==可以直接用来比较字符串

Dart 可以直接通过==来比较字符串:

var s1 = "hello";
var s2 = "HELLO";
assert(s1.toUpperCase() == s2);

注意:

在Dart的条件语句if和assert表达式里面,它们的值必须是bool类型,这点和 JavaScript 不同。


implements和extends以及mixin的区别

继承 ---- extends

典型的面向对象的继承,用于扩展父类;

class B extends A { } , 不强制覆写每一个父类中的方法(getter,setter 必须覆写);

在 Dart 只能继承一个类


接口 ---- interface

当你不想提供方法的实现而只想提供它们的 API 时,使用接口;

class C implements B { },你必须覆写B中所有的方法;

implements 可以扩展到多个类


混入 ---- mixin

共享相同逻辑的代码段;

class B with A { }, 在B中你可以使用A的所有方法,可以通过 on 关键字限制 mixin 的使用范围;

with 可以扩展到多个 mixin

… 级联操作

作用

可以让你在同一个对象上连续调用多个对象的变量或方法,如下面的例子:

class Person {
  var name;
  var age;
  var gender="man";
  Person(this.name, this.age);
  Person.genderNew(this.name, this.age,this.gender);
  printInfo() {
    print("${this.name},${this.age},${this.gender}");
  }
}
main() {
  var p = new Person.genderNew('A', 20,"woman");
  p.printInfo();
  //下面为级联操作
  p
    ..name = "B"
    ..age = 30
    ..gender = "man"
    ..printInfo()
    ..name = "C"
    ..printInfo();
}

运行结果如下:

A,20,woman
B,30,man
C,30,man

$符号

Dart 中可以在字符串通过$variableName或 ${expression} 语法插入变量,类似shell脚本

例如

var s = "hello";
print('${s}, world!');
//可以简化成:
print('$s, world!');
//调用方法
print('${s.toUpperCase()}, world!');

==可以直接用来比较字符串

Dart 可以直接通过==来比较字符串:

var s1 = "hello";
var s2 = "HELLO";
assert(s1.toUpperCase() == s2);

注意:

在Dart的条件语句if和assert表达式里面,它们的值必须是bool类型,这点和 JavaScript 不同。

implements和extends以及mixin的区别

继承 ---- extends

典型的面向对象的继承,用于扩展父类;

class B extends A { } , 不强制覆写每一个父类中的方法(getter,setter 必须覆写);

在 Dart 只能继承一个类

接口 ---- interface

当你不想提供方法的实现而只想提供它们的 API 时,使用接口;

class C implements B { },你必须覆写B中所有的方法;

implements 可以扩展到多个类

混入 ---- mixin

共享相同逻辑的代码段;

class B with A { }, 在B中你可以使用A的所有方法,可以通过 on 关键字限制 mixin 的使用范围;

with 可以扩展到多个 mixin

… 级联操作

作用

可以让你在同一个对象上连续调用多个对象的变量或方法,如下面的例子:

class Person {
  var name;
  var age;
  var gender="man";
  Person(this.name, this.age);
  Person.genderNew(this.name, this.age,this.gender);
  printInfo() {
    print("${this.name},${this.age},${this.gender}");
  }
}
main() {
  var p = new Person.genderNew('A', 20,"woman");
  p.printInfo();
  //下面为级联操作
  p
    ..name = "B"
    ..age = 30
    ..gender = "man"
    ..printInfo()
    ..name = "C"
    ..printInfo();
}

运行结果如下:

A,20,woman
B,30,man
C,30,man

is as

其中is是类型判断操作符,而as是类型转换操作符,也就是常说的强制转换。


相关文章
|
Java
探索Java新境界!异步+事件驱动,打造响应式编程热潮,未来已来!
【8月更文挑战第30天】在现代软件开发中,系统响应性和可扩展性至关重要。Java作为主流编程语言,提供了多种机制如Future、CompletableFuture及事件驱动编程,有效提升应用性能。本文探讨Java异步编程模型与事件驱动编程,并介绍响应式模式,助您构建高效、灵活的应用程序。
147 3
|
JSON Java API
教你如何使用API接口获取数据
随着互联网技术的发展和应用的普及,越来越多的系统和应用提供API接口供其他系统和应用进行数据交互。通过API接口,我们可以获取到各种各样的数据,例如天气预报、股票行情、新闻摘要等等。本文将介绍如何使用API接口获取数据,并附有示例代码。
|
JSON 数据格式
Uncaught SyntaxError: JSON.parse: expected property name or '}' at line 1 column 14 of the JSON data问题如何处理
【6月更文挑战第15天】Uncaught SyntaxError: JSON.parse: expected property name or '}' at line 1 column 14 of the JSON data问题如何处理
550 5
|
11月前
|
算法 网络协议 网络安全
政务单位免费IP地址SSL证书
政务单位申请免费IP地址SSL证书需先确认IP地址为公网IP并拥有管理权限,选择如JoySSL等提供免费测试证书的服务商。申请流程包括注册账号、选择证书类型、提交申请、验证信息、等待审核签发、下载安装证书。注意事项包括安全性、合规性、定期更新及技术支持。通过合理配置,可提升网站安全性和公信力。
|
消息中间件 数据库 开发者
深入理解Python中的异步编程:从基础到高级应用
在当今高并发、低延迟的应用需求下,异步编程已成为提升性能的关键技术之一。本文不仅剖析了Python中异步编程的基本原理,如事件循环、协程与async/await语法,还深入探讨了异步编程的高级应用场景,如Web框架(如FastAPI)中的异步IO操作、异步数据库交互及构建高效的任务处理系统。通过实战案例,引导读者从理论到实践,全面掌握Python异步编程的精髓,让代码飞起来,轻松应对大规模并发挑战。
|
弹性计算 Prometheus 监控
如何基于容器网络流量指标进行弹性伸缩
【8月更文挑战第13天】基于容器网络流量指标进行弹性伸缩可动态调整资源,提升系统性能与利用率。首先选监控工具如Prometheus,收集并分析网络流量数据。接着定义监控指标及阈值,如入站与出站流量。最后配置如Kubernetes的HPA实现自动化伸缩,并通过测试不断优化策略,确保系统稳定高效运行。
130 3
|
Dart 对象存储 Android开发
带你阅读 Flutter Demo(flutter 保姆级入门教程)
带你阅读 Flutter Demo(flutter 保姆级入门教程)
1559 0
imagecreatefromjpeg(),imagecreatefrompng()打开不同格式的图片报错误
imagecreatefromjpeg(),imagecreatefrompng()打开不同格式的图片报错误
174 0
|
Perl
awk命令中逐行处理
awk命令中逐行处理
307 3
|
数据安全/隐私保护
1067 试密码 (20 分)
1067 试密码 (20 分)