Dart 语法总结

Dart语法总结

  • 变量
    • Hello World
    • 变量声明
    • 数据类型
    • 函数使用
    • 面向对象
    • Dart 特殊运算符

变量

Hello World

/*** 1.main函数是dart入口* 2. 参数args, 类型为List<String> - 泛型
*/
void main(List<String> args) {print("hello world");
}

变量声明

void main(List<String> args) {// 和swift类似// 1. 明确的声明String name = "why";// 2. 类型推导 (var/final/const)//虽然没有指定类型,但是是有自己的明确类型的var name1 = "fishycx";// name1 = 1;  这样写会报错的, 和swift类似, 和 python/js 不一样。//final 用来声明一个常量, 类似于swift中的let,运行时得到的常量值final height = 1.99;//height = 2.0; 这样写会报错//const 也是用来声明常量的, 编译时赋值的常量值。就是做=后边必须时一个常量值,而final=后面可以表达式。const address =  "xxxxxx";// address = “yyyyy”;会报错final date = DateTime.now();const p1 = Person("xx");const p2 = Person("xx");print(identical(p1, p2));}class Person {final String name;const Person(this.name);
}

数据类型

数值类型,布尔值, 字符串
条件判断必须是布尔值, 不是和python,js 一样的非0既真。

 //1.数组Listvar names = ["abd", "cbd", "fishycx"];//2.集合Setvar words = {"lovers", "lonely", "only one"};//3.映射Mapvar word1s = {"name": "why", "age": "xxx"};

函数使用

void main(List<String> args) {sayHello("json");// 位置可选参数是指, 中括号里面的参数是可选的, 如果传的话是按照位置匹配的,没有传递 参数名sayHello2("json");sayHello2("json", 10);sayHello2("json", 10, 100);//命名可选参数是指, 打括号括起来的参数是可选的, 如果要传值的话, 使用 参数命名来匹配。 sayHello3("json");sayHello3("json", age: 10);sayHello3("json", height: 10.0, age: 22);}// 必选参数: 必须传的参数
// 可选参数: 1.位置可选参数  2.命名可选参数
// 可选参数才有默认值
// 位置可选参数:[int age, double height]
// 实参或形参进行匹配时, 根据位置进行匹配
void sayHello(String name) {print("hello $name");
}// 可选参数必须提供默认值,或者使用?标记可以为空
void sayHello2(String name, [int? age, double? height]) {print("hello $name $age $height");
}// 命名可选参数使用{}
void sayHello3(String name, {int? age, double? height}) {print("hello $name $age $height");
}

匿名函数:

void main(List<String> args) {// swift, pyton, dart, 函数是一等公民, java, oc 并不是。 // 函数可以赋值给一个变量, 可以做为另外一个函数的参数或返回值。test(bar);//匿名函数test((){print("匿名函数");});//和ES6差不多.test((){print("箭头函数");});test1((num1, num2) {return num1 + num2;});var demo1 = demo();print(demo1(10, 20));
}void test(Function foo) {foo();
}void bar() {print("bar 函数被调用");
}//开发中,使用typedef 给函数一个别名,  typedef Caculate = int Function(int num1, int  num2);void test1(Caculate calc) {print(calc(20, 30));
}//函数做为返回值
Caculate demo() {return  (int num1, int num2){return num1 * num2;};
}

面向对象

命名构造函数

class Person {String age;String name;double height;Person(this.age, this.name, this.height);//命名构造函数Person.withAgeNameHeight(this.age, this.name, this.height);
}

Dart 特殊运算符

void main(List<String> args) {// ??= : 当原来的变量有值时, 不执行赋值操作。var name = null;name ??= "lelei";print(name);// ??  如果变量为null, 可取 ??后面的值赋值给变量, 这和swift一直var name1 = null;print(name1 ?? "fishycx");
}
void main(List<String> args) {var p = Person();p.name = "Why";print(p.name);p.run();p.eat();var p1 = Person()..name = "xxx"..run()..eat();
}class Person {late String name;void run() {print("running");}void eat() {print("eating");}
}

for 循环

void main(List<String> args) {//1.基础for循环for(var i = 0; i<10; i++) {print(i);}//2.遍历数组for(var i in [1, 3, 5, 10]) {print(i);}}

\

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/130495.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

centos系统源码编译安装nginx,并编写服务脚本

1.安装编译所需的依赖项&#xff1a; yum install -y gcc pcre-devel openssl-devel zlib-devel2.下载 Nginx 源代码&#xff1a; wget http://nginx.org/download/nginx-1.21.3.tar.gz tar -xf nginx-1.21.3.tar.gz cd nginx-1.21.33.配置编译选项并进行编译和安装&#xff…

hook cookie

(function() {use strict;var cookieTemp "";Object.defineProperty(document, cookie, {set: function(val) {console.log(Hook捕获到cookie设置->, val);debugger;cookieTemp val;return val;},get: function(){return cookieTemp;}}); })();

C++prime之输入输出文件

作为一种优秀的语言&#xff0c;C必然是能操作文件的&#xff0c;但是我们要知道&#xff0c;C是不直接处理输入输出的&#xff0c;而是通过一族定义在标准库中的类型来处理IO的。 ‘流’和‘缓冲区’ ‘流’和‘缓冲区’ C程序把输入输出看作字节流&#xff0c;并且其只检查…

Microsoft Dynamics 365 CE 扩展定制 - 5. 外部集成

本章内容包括: 使用.NET从其他系统连接到Dynamics 365使用OData(Java)从其他系统连接到Dynamics 365使用外部库从外部源检索数据使用web应用程序连接到Dynamics 365运行Azure计划任务设置Azure Service Bus终结点与Azure Service Bus构建近乎实时的集成使用来自Azure服务总线…

接口测试入门,如何划分接口文档

1.首先最主要的就是要分析接口测试文档&#xff0c;每一个公司的测试文档都是不一样的。具体的就要根据自己公司的接口而定&#xff0c;里面缺少的内容自己需要与开发进行确认。 我认为一针对于测试而言的主要的接口测试文档应该包含的内容分为以下几个方面。 a.具体的一个业…

selenium自动化测试入门 —— 设置等待时间

time.sleep(3) 固定等待3秒 driver.implicitly_wait(10) 隐性的等待&#xff0c;对应全局 WebDriverWait( driver, timeout).until(‘有返回值的__call__()方法或函数’) 显性的等待&#xff0c;对应到元素 一、time.sleep(seconds) 固定等待 import time time.sleep(3) #…

SQL中 <>(不等于)运算符只会匹配那些具有非空值的记录

0. 场景 idflag112null3 一张表的有有个varchar类型的flag字段,字段值有 null值/空值和 1。 flag为 1即表示逻辑删除,我想找出flag字段非 1 的所有情况: 一开始sql写法: select * from table where flag<>‘1’理想情况,结果集应该有2条记录(id为 2 和 3 的记录)实际情…

axios 全局错误处理和请求取消

这两个功能都是用拦截器实现。 前景提要&#xff1a; ts 简易封装 axios&#xff0c;统一 API 实现在 config 中配置开关拦截器 全局错误处理 在构造函数中&#xff0c;添加一个响应拦截器即可。在构造函数中注册拦截器的好处是&#xff0c;无论怎么实例化封装类&#xff0c…

RK3588 ubuntu系统安装opencv

废话不多说直接上步骤&#xff1a; 先切换至root用户 sudo su 输入密码先更新一下本地软件 apt update apt upgrade 安装相关环境 apt install build-essential cmake git pkg-config libgtk-3-dev \ libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-…

Vuex源码-各原理简单总结

1&#xff0c;简单总结 Vuex就是一个构造函数&#xff0c;他拥有install方法和Store类这两个属性。在vue初始化调用new Vue的时候&#xff0c;将store作为参数传入&#xff0c;然后调用Vue.use()实际是调用install方法将store这个实例挂载到全局&#xff0c;从而可以保证全局只…

基础课19——客服系统知识库的搭建流程

1.收集整理业务数据 注意&#xff1a;我们在做业务数据收集时&#xff0c;往往是甲方提供给我们的&#xff0c;这时就需要确定一个标准&#xff0c;否则对知识库梳理工作会带来很大的难度&#xff0c;建议和甲方沟通确认一个双方都统一的知识库原材料。 2.创建知识库 在创建知…

Docker基础(简单易懂)

目录 一、docker是什么 核心概念 二、docker安装 1、卸载docker 2、使用yum 安装 三、docker常用命令 1、帮助命令 2、镜像命令 1&#xff09;查看镜像 2&#xff09;查询镜像 3&#xff09;拉取镜像 4&#xff09;删除镜像 3、容器命令 四、容器数据卷 五、Dock…

深度学习之基于Tensorflow人脸面部表情识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 基于Tensorflow的人脸面部表情识别系统是一种基于深度学习技术的图像处理应用&#xff0c;该系统主要通过人脸图像数…

CoCa论文笔记

摘要 计算机视觉任务中&#xff0c;探索大规模预训练基础模型具有重要意义&#xff0c;因为这些模型可以可以极快地迁移到下游任务中。本文提出的CoCa&#xff08;Contrastive Captioner&#xff09;&#xff0c;一个极简设计&#xff0c;结合对比损失和captioning损失预训练一…

面试题:有一个 List 对象集合,如何优雅地返回给前端?

文章目录 1.业务背景每个对象里面都带上了重复的一个sessionId数据&#xff0c;我想提出来该怎么办&#xff1f; 2.实体类3.自定义Mapper和xml文件4.Service层5.Controller层 1.业务背景 业务场景中&#xff0c;一个会话中存在多个场景&#xff0c;即一个session_id对应多个sc…

c#字符串格式化

字符串格式化是一种将变量的值插入到字符串中的方法。它允许我们创建动态的字符串&#xff0c;其中包含变量的值。 string.Format 通过在字符串中使用占位符{0}&#xff0c;{1}等&#xff0c;我们可以指定要插入的变量的位置。然后&#xff0c;通过在string.Format方法的参数…

Zabbix如何监控腾讯云NAT网关

1、NAT网关介绍 NAT 网关&#xff08;NAT Gateway&#xff09;是一种支持 IP 地址转换服务&#xff0c;提供网络地址转换能力&#xff0c;主要包括SNAT&#xff08;Source Network Address Translation&#xff0c;源网络地址转换&#xff09;和DNAT&#xff08;Destination N…

如何使用Python和Matplotlib创建双Y轴动态风格折线图 | 数据可视化教程

前言 我的科研论文中需要绘制一个精美的折线图&#xff0c;我的折线图中有三条曲线&#xff0c;分别表示期望角速度指令信号&#xff0c;和实际的角速度信号&#xff0c;还有实际的航向角信号&#xff0c;现在我已经拥有了数据&#xff0c;使用Python中matplotlib.plt.plot来直…

421.数组中两个数的最大异或值

​​题目来源&#xff1a; leetcode题目&#xff0c;网址&#xff1a;421. 数组中两个数的最大异或值 - 力扣&#xff08;LeetCode&#xff09; 解题思路&#xff1a; int 型 数据有 32 位。从最高位开始逐位判断能否为 1&#xff0c;若可以&#xff0c;该位置 1&#xff0c;否…

Java线程的基本概念和五种状态

1. 线程 1.1 创建线程 创建线程通常有以下三种方式&#xff1a; 实现 Runnable 接口&#xff0c;并重写其 run 方法&#xff1a; public class J1_Method01 {public static void main(String[] args) {System.out.println("Main线程的ID为&#xff1a;" Thread.curr…