您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > 百科

Dart编程语言最常用的函数(备忘查询)

时间:2022-11-17 15:38:08  来源:今日头条  作者:区块软件开发

安装 Dart

windows

C:> choco install dart-sdk # Windows

linux

执行以下一次性设置

$ sudo apt-get update
$ sudo apt-get install apt-transport-https
$ wget -qO- https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo gpg --dearmor -o /usr/share/keyrings/dart.gpg
$ echo 'deb [signed-by=/usr/share/keyrings/dart.gpg arch=amd64] https://storage.googleapis.com/download.dartlang.org/linux/debian stable main' | sudo tee /etc/apt/sources.list.d/dart_stable.list

安装 Dart SDK

$ sudo apt-get update
$ sudo apt-get install dart

mac

$ brew tap dart-lang/dart
$ brew install dart

hello.dart

// 应用执行开始的顶级函数
void main() {
    print("Hello World!"); // 打印到控制台
}

每个应用程序都有一个 main() 函数

Windows

$ dart compile exe hellow.dart
$ time ./hello.exe
Hello World!

变量

int x = 2; // 显式键入
var p = 5; // 类型推断 - 具有类型推断的通用var
dynamic z = 8; // 变量可以采用任何类型
z = "cool"; // cool

// 如果您从不打算更改变量,请使用 final 或 const
// 像这样的东西:
final email = "temid@gmail.com";
// 与 var 相同,但不能重新分配
final String email = "temid@gmail.com";
// 你不能改变价值
const qty = 5; // 编译时常数

数据类型

// 整数,范围 -2^63 到 2^63 - 1
int age = 20;
// 浮点数字

double height = 1.85;
// 您还可以将变量声明为 num
// x 可以同时具有 int 和 double 值
num x = 1;
num += 2.5;
print(num); // 打印: 3.5

String name = "Nicola";
bool isFavourite = true;
bool isLoaded = false;

注释

// 这是一条正常的单行注释
/// 这是一个文档注释,用于文档库,
/// 类及其成员。 IDE 和 dartdoc 等工具
/// doc 特别注释。
/* 也支持此类注释 */

字符串插值

// 可以对字符串类型使用单引号或双引号
var firstName = 'Nicola';
var lastName = "Tesla";
// 可以用 $ 将变量嵌入到字符串中
String fullName = "$firstName $lastName";
// 与 + 连接
var name = "Albert " + "Einstein";
String upperCase = '${firstName.toUpperCase()}';
print(upperCase); // 打印: NICOLA

导入 Imports

// 导入核心库
import 'dart:math';
// 从外部包导入库
import 'package:test/test.dart';
// 导入文件
import 'path/to/my_other_file.dart';

操作符

算术运算符

print(2 + 3);  // 打印: 5
print(2 - 3);  // 打印: -1
print(2 * 3);  // 打印: 6
print(5 / 2);  // 打印: 2.5 - 结果是 double
print(5 ~/ 2); // 打印: 2 - 结果是n int
print(5 % 2);  // 打印: 1 - 余
int a = 1, b;

// 增
b = ++a; // 前增量 - 在 b 获得其值之前增加 a
b = a++; // 后增量 - 在 b 获得它的值之后增加 a
// 递
b = --a; // 前减量 - 在 b 获得它的值之前减少 a
b = a--; // 后减量 - 在 b 获得它的值之后递减 a

逻辑运算符

// !expr 反转表达式(将 false 更改为 true,反之亦然)
// ||  逻辑或
// &&  逻辑与
bool isOutOfStock = false;
int quantity = 3;
if (!isOutOfStock && (quantity == 2 || quantity == 3)) {
  // ...Order the product...
}

等式和关系运算符

print(2 == 2); // 打印: true - 平等的
print(2 != 3); // 打印: true - 不相等
print(3 > 2);  // 打印: true - 比...更棒
print(2 < 3);  // 打印: true - 少于
print(3 >= 3); // 打印: true - 大于或等于
print(2 <= 3); // 打印: true - 小于或等于

控制流:条件

if 和 else if

if(age < 18){
    print("Teen");
} else if( age > 18 && age <60){
    print("Adult");
} else {
    print("Old");
}

switch case

enum Pet {dog, cat}
Pet myPet = Pet.dog;
switch(myPet){
    case Pet.dog:
        print('My Pet is Dog.');
        break;
    case Pet.cat:
        print('My Pet is Cat.');
        break;
    default:
        print('I don't have a Pet');
}
// 打印: My Pet is Dog.

控制流:循环

while 循环

while (!dreamsAchieved) {
  workHard();
}

循环迭代之前的 while 循环检查条件

do-while 循环

do {
  workHard();
} while (!dreamsAchieved);

do-while 循环在执行循环内的语句后验证条件

for 循环

for(int i=0; i< 10; i++){
    print(i);
}
var numbers = [1,2,3];
// 列表的 for-in 循环
for(var number in numbers){
    print(number);
}

Collections

Lists

// 有序的对象组
var list = [1, 2, 3];
print(list.length); //Print: 3
print(list[1]); //Print: 2
// 列表声明和初始化的其他方式
List<String> cities = <String>["New York", "Mumbai", "Tokyo"];
// 创建一个编译时常量的列表
const constantCities = const ["New York", "Mumbai", "Tokyo"];

Maps

// 映射是关联键和值的对象
var person = Map<String, String>();
// 要初始化地图,请执行以下操作:
person['firstName'] = 'Nicola';
person['lastName'] = 'Tesla';
print(person);
// 打印: {firstName:Nicola, lastName:Tesla}
print(person['lastName']);
// 打印: Tesla

var nobleGases = {
  // Key: Value
  2: 'helium',
  10: 'neon',
  18: 'argon',
};

Sets

// Dart 中的集合是唯一项的无序集合
var halogens = {'fluorine', 'chlorine', 'bromine', 'iodine', 'astatine'};
// 创建一个空集
var names = <String>{};
Set<String> names = {}; // 这也有效
//var names = {}; // 创建地图,而不是集合

函数

函数示例

// dart 中的函数是对象并且有一个类型
int add(int a, int b){
    return a+b;
}
// 函数可以分配给变量
int sum = add(2,3); // 回报:5
// 可以作为参数传递给其他函数
int totalSum = add(2, add(2,3)); // 返回:7

箭头语法 (=>)

// 只包含一个表达式的函数,您可以使用简写语法
bool isFav(Product product) => favProductsList.contains(product);

Anonymous (lambda) functions

// 没有名字的小单行函数
int add(a,b) => a+b;
// lambda 函数大多作为参数传递给其他函数
const list = [
  'Apples', 'bananas', 'oranges'
];

list.forEach(
  (item) =>
    print('${list.indexOf(item)}: $item')
);
// 打印: 0: apples 1: bananas 2: oranges

类和对象

类 Class

class Cat {
    String name;
    // 方法
    void voice(){
        print("Meow");
    }
}

对象 Object

// 类的实例
// 在 myCat 下面是 Cat 类的对象
void main(){
    Cat myCat = Cat();
    myCat.name = "Kitty";
    myCat.voice(); // 打印: Meow
}

构造函数

class Cat {
    String name;
    Cat(this.name);
}
void main(){
    Cat myCat = Cat("Kitty");
    print(myCat.name); // 打印: Kitty
}

抽象类

// 抽象类——不能实例化的类
// 这个类被声明为抽象的,因此不能被实例化
abstract class AbstractContainer {
  // 定义构造函数、字段、方法...
  void updateChildren(); // 抽象方法
}

Getters Setters

// 提供对对象属性的读写访问
class Cat {
    String name;
    // getter
    String get catName {
        return name;
    }
    // setter
    void set catName(String name){
        this.name = name;
    }
}

隐式接口

一个基本的界面

// 一个人。隐式接口包含 greet()。
class Person {
  // 在接口中,但仅在此库中可见。
  final String _name;
  // 不在接口中,因为这是一个构造函数。
  Person(this._name);
  // 在接口中
  String greet(String who) => 'Hello, $who. I am $_name.';
}
// Person 接口的实现。
class Impostor implements Person {
  String get _name => '';
  String greet(String who) => 'Hi $who. Do you know who I am?';
}
String greetBob(Person person) => person.greet('Bob');
void main() {
  print(greetBob(Person('Kathy')));
  // 打印: Hello, Bob. I am Kathy.
  print(greetBob(Impostor()));
  // 打印: Hi Bob. Do you know who I am?
}

扩展类

class Phone {
    void use(){
        _call();
        _sendMessage();
    }
}
// 使用 extends 创建子类
class SmartPhone extends Phone {
    void use(){
        // 使用 super 来引用超类
        super.use();
        _takePhotos();
        _playGames();
    }
}

异常

Throw

// 抛出 throws 或引发 raises 和异常 exception
throw IntegerDivisionByZeroException();
// 你也可以抛出任意对象
throw "Product out of stock!";

Catch

try {
    int c = 3/0;
    print(c);
} on IntegerDivisionByZeroException {
    // 一个特定的异常
    print('Can not divide integer by 0.')
} on Exception catch (e) {
    // 任何其他异常情况
    print('Unknown exception: $e');
} catch (e) {
    // 没有指定类型,处理所有
    print('Something really unknown: $e');
}

Finally

// 确保某些代码无论是否抛出异常都能运行
try {
  cookFood();
} catch (e) {
  print('Error: $e'); // 先处理异常
} finally {
  cleanKitchen();     // 然后清理
}

Futures

Async Await

// 异步函数:它们在设置可能耗时的操作后返回
// async 和 await 关键字支持异步编程
Future<String> login() {
  String userName="Temidjoy";
  return
    Future.delayed(
      Duration(seconds: 4), () => userName
    );
}
// 异步
main() async {
  print('Authenticating please wait...');
  print(await userName());
}

各种各样的

Null 和 Null 感知

int x; // 任何对象的初始值为 null
// ?? 空感知运算符
x ??=6;   // ??= 赋值运算符,仅当变量当前为 null 时才为其赋值
print(x); // 打印: 6
x ??=3;
print(x); // 打印: 6 - 结果仍然是 6
print(null ?? 10); // 打印: 10。如果不为空,则显示左侧的值,否则返回右侧的值

三元运算符

// 条件 ? 条件如果为真 : 条件如果为假
bool isAvailable;
isAvailable ? orderproduct() : addToFavourite();

条件属性访问

userObject?.userName
// 上面的代码片段等效于以下代码:
(userObject != null) ? userObject.userName : null
// 您可以将 ? 的多种用途链接起来。一起在一个表达式中
userObject?.userName?.toString()
// 如果 userObject 或 userObject.userName 为 null,则前面的代码返回 null 并且从不调用 toString()

级联符号 (..)

// 允许您对同一对象进行一系列操作
// 而不是这样做
var user = User();
user.name = "Nicola";
user.email = "nicola@g.c";
user.age = 24;
// 你可以这样做
var user = User()
  ..name = "Nicola"
  ..email = "nicola@g.c"
  ..age = 24;

扩展运算符 (...)

// 将多个值插入到集合中
var list = [1, 2, 3];
var list2 = [0, ...list];
print(list2.length); // 打印: 4

更多参考 Dart 官方文档 (dart.dev



Tags:Dart   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
安装 DartWindowsC:\> choco install dart-sdk # WindowsLinux执行以下一次性设置$ sudo apt-get update$ sudo apt-get install apt-transport-https$ wget -qO- https://d...【详细内容】
2022-11-17  Tags: Dart  点击:(0)  评论:(0)  加入收藏
“一套代码,多端运行。”是很多开发团队的梦想,直到 2018 年 12 月 5 日,谷歌正式发布 Flutter 1.0 版本,前端开发者向这一梦想前进了一大步。Flutter 仅用了不到一年的时间就在...【详细内容】
2020-12-09  Tags: Dart  点击:(199)  评论:(0)  加入收藏
本文是【从零开始学习,开发个Flutter App】路上的第 1 篇文章。这篇文章介绍了 Dart 的基础特性,目的在于让大家建立对 Dart 语言的总体认知,初步掌握 Dart 的语法。我们假...【详细内容】
2020-01-06  Tags: Dart  点击:(133)  评论:(0)  加入收藏
什么是Dart语言Dart语言是谷歌公司在2011年推出的新的计算机语言。Dart可以应用于web、服务器、移动应用和物联网等领域的开发。Dart的终极目标是取代JavaScript。Dart设计...【详细内容】
2019-08-05  Tags: Dart  点击:(431)  评论:(0)  加入收藏
▌简易百科推荐
安装 DartWindowsC:\> choco install dart-sdk # WindowsLinux执行以下一次性设置$ sudo apt-get update$ sudo apt-get install apt-transport-https$ wget -qO- https://d...【详细内容】
2022-11-17  区块软件开发  今日头条  Tags:Dart   点击:(0)  评论:(0)  加入收藏
基于FPGA的SOC在嵌入式系统应用越来越广了,比较流行的硬件描述语言有两种Verilog HDL/VHDL,均为IEEE标准。VHDL如果有C语言基础的话就会比较容易上手。而VHDL语言则需要Ada编...【详细内容】
2022-11-17  IC修真院  CSDN  Tags:VHDL   点击:(0)  评论:(0)  加入收藏
简介原子类型在构建无锁数据结构,跨线程共享数据,线程间同步等多线程并发编程场景中起到至关重要的作用。本文将从Rust提供的原子类型和原子类型的内存排序问题两方面来介绍...【详细内容】
2022-10-28  达坦科技DateLord  今日头条  Tags:Rust   点击:(13)  评论:(0)  加入收藏
编译|燕珊,核子可乐Meta 现在爱 Kotlin 多于 Java。Facebook 母公司 Meta 正在将其 Android 应用的 Java 代码迁移到 Kotlin。根据 Meta 的官方博客所述,截至今天,其 Android 代...【详细内容】
2022-10-26  InfoQ     Tags:Kotlin   点击:(18)  评论:(0)  加入收藏
作者 | Logan dev译者 | 核子可乐、刘燕200 多种编程语言里,哪些最“吃香”?目前,市面上有 200 多种编程语言可供我们选择,但其中哪些薪酬最为丰厚?为了回答这个问题,国外网站 Dev...【详细内容】
2022-10-25  InfoQ   今日头条  Tags:编程语言   点击:(21)  评论:(0)  加入收藏
本文分享自华为云社区《PanGu-Coder: 函数级的代码生成模型-云社区-华为云》,作者:DevAI 。1. 概述基于预训练模型的生成技术在自然语言处理领域获得了极大的成功。近年来,包括...【详细内容】
2022-08-01  华为云社区    Tags:PanGu-Coder   点击:(123)  评论:(0)  加入收藏
R语言是比较常用的统计分析和绘图语言,拥有强大的统计库、绘图库和生信分析的Bioconductor库,是学习生物信息分析的必备语言之一。Rstudio是编辑、运行R语言的最为理想的工具...【详细内容】
2022-06-20  生信宝典    Tags:R语言   点击:(140)  评论:(0)  加入收藏
站内最新
站内热门
站内头条