正文

Android开发中Dart语言7个很酷的特点(dart语言怎么样)这都可以?

文章摘要

这篇文章介绍了Dart语言的七个酷特性及其应用场景,旨在帮助开发者通过简洁、流畅的方式改进代码。主要内容包括: 1. **Cascade级联**:允许对同一个对象进行一系列操作,节省临时变量,提升代码可读性。 2. **Abstract抽象类**:定义接口,用于实现多个功能,便于代码复用。 3. **Factory构造函数**:用于不总是创建新实例的情况,提升代码效率。 4. **Named构造函数**:为多个构造函数或提供额外清晰度,提升代码可读性。 5. **Mixins**:在多个层次结构中重用代码,促进代码复用。 6. **Type Aliases**:简化类型名称,提升代码可读性和清晰度。 7. **Extension扩展方法**:向库和代码中添加功能,提升代码扩展性。 8. **可选参数**:通过包装位置参数为可选,提升代码灵活性。 9. **unawaited**:优化异步操作,提升执行效率。 这些特性通过提升代码简洁性和可维护性,显著提升了开发效率,是Dart语言的重要优势。


目录参考正文Cascade 级联Abstract 抽象类Factory constructors 工厂建造者Named 命名构造函数Mixins 混合物TypedefsExtension 扩展方法unawaited_futures

https://dart.dev/guides/language/language-tour

今天的文章简短地揭示了 Dart 语言所提供的很酷的特性。更多时候,这些选项对于简单的应用程序是不必要的,但是当你想要通过简单、清晰和简洁来改进你的代码时,这些选项是一个救命稻草。

考虑到这一点,我们走吧。

Cascades (.., ?..) 允许你对同一个对象进行一系列操作。这通常节省了创建临时变量的步骤,并允许您编写更多流畅的代码。

var paint=Paint(); paint.color=Colors.black; paint.strokeCap=StrokeCap.round; paint.strokeWidth=5.0; //above block of code when optimized var paint=Paint() ..color=Colors.black ..strokeCap=StrokeCap.round ..strokeWidth=5.0;

使用 abstract 修饰符定义一个 _abstract 抽象类(无法实例化的类)。抽象类对于定义接口非常有用,通常带有一些实现。

// This class is declared abstract and thus // can’t be instantiated. abstract class AbstractContainer { // Define constructors, fields, methods… void updateChildren(); // Abstract method. }

在实现不总是创建类的新实例的构造函数时使用 factory 关键字。

class Logger { String name; Logger(this.name); factory Logger.fromJson(Map<String, Object> json) { return Logger(json[‘name’].toString()); } }

使用命名构造函数为一个类实现多个构造函数或者提供额外的清晰度:

class Points { final double x; final double y; //unnamed constructor Points(this.x, this.y); // Named constructor Points.origin(double x,double y) : x=x, y=y; // Named constructor Points.destination(double x,double y) : x=x, y=y; }

Mixin 是在多个类层次结构中重用类代码的一种方法。

要实现 implement mixin,创建一个声明没有构造函数的类。除非您希望 mixin 可以作为常规类使用,否则请使用 mixin 关键字而不是类。

若要使用 mixin,请使用后跟一个或多个 mixin 名称的 with 关键字。

若要限制可以使用 mixin 的类型,请使用 on 关键字指定所需的超类。

class Musician {} //creating a mixin mixin Feedback { void boo() { print(‘boooing’); } void clap() { print(‘clapping’); } } //only classes that extend or implement the Musician class //can use the mixin Song mixin Song on Musician { void play() { print(‘——-playing——‘); } void stop() { print(‘….stopping…..’); } } //To use a mixin, use the with keyword followed by one or more mixin names class PerformSong extends Musician with Feedback, Song { //Because PerformSong extends Musician, //PerformSong can mix in Song void awesomeSong() { play(); clap(); } void badSong() { play(); boo(); } } void main() { PerformSong().awesomeSong(); PerformSong().stop(); PerformSong().badSong(); }

类型别名ー是指代类型的一种简明方式。通常用于创建在项目中经常使用的自定义类型。

typedef IntList=List<int>; List<int> i1=[1,2,3]; // normal way. IntList i2=[1, 2, 3]; // Same thing but shorter and clearer. //type alias can have type parameters typedef ListMapper<X>=Map<X, List<X>>; Map<String, List<String>> m1={}; // normal way. ListMapper<String> m2={}; // Same thing but shorter and clearer.

在 Dart 2.7 中引入的扩展方法是一种向现有库和代码中添加功能的方法。

//extension to convert a string to a number extension NumberParsing on String { int customParseInt() { return int.parse(this); } double customParseDouble() { return double.parse(this); } } void main() { //various ways to use the extension var d=’21’.customParseDouble(); print(d); var i=NumberParsing(’20’).customParseInt(); print(i); }

可选的位置参数

通过将位置参数包装在方括号中,可以使位置参数成为可选参数。可选的位置参数在函数的参数列表中总是最后一个。除非您提供另一个默认值,否则它们的默认值为 null。

String joinWithCommas(int a, [int? b, int? c, int? d, int e=100]) { var total=’$a’; if (b !=null) total=’$total,$b’; if (c !=null) total=’$total,$c’; if (d !=null) total=’$total,$d’; total=’$total,$e’; return total; } void main() { var result=joinWithCommas(1, 2); print(result); }

当您想要启动一个 Future 时,建议的方法是使用 unawaited

否则你不加 async 就不会执行了

import ‘dart:async’; Future doSomething() { return Future.delayed(Duration(seconds: 5)); } void main() async { //the function is fired and awaited till completion await doSomething(); // Explicitly-ignored //The function is fired and forgotten unawaited(doSomething()); }

以上就是Android开发Dart语言7个很酷的特点的详细内容,更多关于Android开发Dart特点的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:Dart语法之变量声明与数据类型实例详解Google Dart编程语法和基本类型学习教程Flutter入门学习Dart语言变量及基本使用概念Android开发Dart?Constructors构造函数使用技巧整理Dart?异步编程生成器及自定义类型用法详解