初探 Dart 语法 01

2024-08-27 14:32
文章标签 语法 01 初探 dart

本文主要是介绍初探 Dart 语法 01,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

欢迎来到 Dart 编程的世界,最开始将通过初探 Dart 的基本语法;让你对 Dart 整个语法体系轮廓、Dart 的编程有个大概了解,然后再深入到具体每个语法点细节和使用场景。由于文章篇幅的问题,初探 Dart 语法主要分为上下两篇来介绍。

1. Hello Dart

这是第一个 Hello Dart 程序,很多程序入口都是从 main 函数开始,所以 Dart 也不例外,一起来看下百变的 main 函数。

//main 标准写法
void main() {print('Hello World!');//注意:Dart 和 Java 一样表达式以分号结尾,写习惯 Kotlin 的小伙伴需要注意了,这可能是你从 Kotlin 转 Dart 最大不适之一。
}//Dart 中所有函数的类型都是可以省略的,省略的时候返回值类型为 dynamic
main() {print('Hello World!');  
}//如果函数内部只有一个表达式,可以省略大括号,使用"=>"箭头函数;
//而对于 Kotlin 则是如果只有一个表达式,可以省略大括号,使用"="连接,类似 fun main(args: Array<String>) = println('Hello World!')
void main() => print('Hello World!');//最简写形式
main() => print('Hello World!');

2. 数据类型

在 Dart 中的一切皆是对象,包括数字、布尔值、函数等,它们和 Java 一样都继承于 Object,所以它们的默认值也就是 null。在 Dart 主要有:布尔类型 bool、数字类型 num(数字类型又分为 int、double,并且两者父类都是 num)、字符串类型 String、集合类型(List、Set、Map)、Runes 类和 Symbols 类型(后两个用的并不太多)。

2.1 布尔类型(bool)

在 Dart 中和 C 语言一样,都是使用 bool 来声明一个布尔类型变量或常量,而在 Kotlin 则是使用 Boolean 来声明,但是一致的是,它对应的值只有两个 true 和 false。

main() {bool isClosed = true;//注意,Dart 还是和 Java 类似的 [类型][变量名]方式声明,这个和 Kotlin 的 [变量名]:[类型]不一样.bool isOpened = false;
}
2.2 数字类型(num、int、double)

在 Dart 中 num、int、double 都是类,然后 int、double 都继承 num 抽象类,这点和 Kotlin 很类似,在 Kotlin 中 Number、Int、Double 都是类,然后 Int、Double 都继承于 Number。注意,但是在 Dart 中没有 float、short、long 类型

main() {double pi = 3.141592653;int width = 200;int height = 300;print(width / height);//注意:这里和 Kotlin、Java 都不一样,两个 int 类型相除是 double 类型小数,而不是整除后的整数。print(width ~/ height);//注意:这才是 Dart 整除正确姿势
}

此外和 Java、Kotlin 一样,Dart 也拥有一些数字常用的函数:

main() {print(3.141592653.toStringAsFixed(3)); //3.142 保留有效数字print(6.6.floor());//6 向下取整print((-6.6).ceil()); //-6 向上取整print(9.9.ceil()); //10 向上取整print(666.6.round()); //667 四舍五入print((-666.6).abs()); // 666.6 取绝对值print(666.6.toInt()); //666 转化成 int,这中 toInt、toDouble 和 Kotlin 类似print(999.isEven); //false 是否是偶数print(999.isOdd); //true 是否是奇数print(666.6.toString()); //666.6 转化成字符串
}
2.3 字符串类型(String)

在 Dart 中支持单引号、双引号、三引号以及 $ 字符串模板用法和 Kotlin 是一模一样的。

main() {String name = 'Hello Dart!';//单引号String title = "'Hello Dart!'";//双引号String description = """Hello Dart! Hello Dart!Hello Dart!Hello Dart! Hello Dart!""";//三引号num value = 2;String result = "The result is $value";//单值引用num width = 200;num height = 300;String square = "The square is ${width * height}";//表达式的值引用
}

和 Kotlin 一样,Dart 中也有很多字符串操作的方法,比如字符串拆分、子串等。

main() {String url = "https://mrale.ph/dartvm/";print(url.split("://")[0]); //字符串分割 split 方法,类似 Java 和 Kotlinprint(url.substring(3, 9)); //字符串截取 substring 方法,类似 Java 和 Kotlinprint(url.codeUnitAt(0)); //取当前索引位置字符的 UTF-16 码print(url.startsWith("https")); //当前字符串是否以指定字符开头,类似 Java 和 Kotlinprint(url.endsWith("/")); //当前字符串是否以指定字符结尾,类似 Java 和 Kotlinprint(url.toUpperCase()); //大写,类似 Java 和 Kotlinprint(url.toLowerCase()); //小写,类似 Java 和 Kotlinprint(url.indexOf("ph")); //获取指定字符的索引位置,类似 Java 和 Kotlinprint(url.contains("http")); //字符串是否包含指定字符,类似 Java 和 Kotlinprint(url.trim()); //去除字符串的首尾空格,类似 Java 和 Kotlinprint(url.length); //获取字符串长度print(url.replaceFirst("t", "A")); //替换第一次出现 t 字符位置的字符print(url.replaceAll("m", "M")); //全部替换,类似 Java 和 Kotlin
}
2.4 类型检查(is 和 is!)和强制类型转换(as)

和 Kotlin 一样,Dart 也是通过 is 关键字来对类型进行检查以及使用 as 关键字对类型进行强制转换,如果判断不是某个类型 Dart 中使用 is!,而在 Kotlin 中正好相反则用 !is 表示。

main() {int number = 100;double distance = 200.5;num age = 18;print(number is num);//trueprint(distance is! int);//trueprint(age as int);//18
}
2.5 Runes 和 Symbols 类型

在 Dart 中的 Runes 和 Symbols 类型使用并不多,这里做个简单的介绍。

Runes 类型是 UTF-32 字节单元定义的 Unicode 字符串,Unicode 可以使用数字表示字母、数字和符号,然而在 Dart 中,String 是一系列的 UTF-16 的字节单元,所以想要表示 32 位的 Unicode 的值,就需要用到 Runes 类型。我们一般使用 \uxxxx 这种形式来表示一个 Unicode 码,xxxx 表示 4 个十六进制值。当十六进制数据多余或者少于 4 位时,将十六进制数放入到花括号中,例如,微笑表情(

这篇关于初探 Dart 语法 01的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1111938

相关文章

hdu 2602 and poj 3624(01背包)

01背包的模板题。 hdu2602代码: #include<stdio.h>#include<string.h>const int MaxN = 1001;int max(int a, int b){return a > b ? a : b;}int w[MaxN];int v[MaxN];int dp[MaxN];int main(){int T;int N, V;s

集中式版本控制与分布式版本控制——Git 学习笔记01

什么是版本控制 如果你用 Microsoft Word 写过东西,那你八成会有这样的经历: 想删除一段文字,又怕将来这段文字有用,怎么办呢?有一个办法,先把当前文件“另存为”一个文件,然后继续改,改到某个程度,再“另存为”一个文件。就这样改着、存着……最后你的 Word 文档变成了这样: 过了几天,你想找回被删除的文字,但是已经记不清保存在哪个文件了,只能挨个去找。真麻烦,眼睛都花了。看

C++语法知识点合集:11.模板

文章目录 一、非类型模板参数1.非类型模板参数的基本形式2.指针作为非类型模板参数3.引用作为非类型模板参数4.非类型模板参数的限制和陷阱:5.几个问题 二、模板的特化1.概念2.函数模板特化3.类模板特化(1)全特化(2)偏特化(3)类模板特化应用示例 三、模板分离编译1.概念2.模板的分离编译 模版总结 一、非类型模板参数 模板参数分类类型形参与非类型形参 非类型模板

Java基础回顾系列-第一天-基本语法

基本语法 Java基础回顾系列-第一天-基本语法基础常识人机交互方式常用的DOS命令什么是计算机语言(编程语言) Java语言简介Java程序运行机制Java虚拟机(Java Virtual Machine)垃圾收集机制(Garbage Collection) Java语言的特点面向对象健壮性跨平台性 编写第一个Java程序什么是JDK, JRE下载及安装 JDK配置环境变量 pathHe

01 Docker概念和部署

目录 1.1 Docker 概述 1.1.1 Docker 的优势 1.1.2 镜像 1.1.3 容器 1.1.4 仓库 1.2 安装 Docker 1.2.1 配置和安装依赖环境 1.3镜像操作 1.3.1 搜索镜像 1.3.2 获取镜像 1.3.3 查看镜像 1.3.4 给镜像重命名 1.3.5 存储,载入镜像和删除镜像 1.4 Doecker容器操作 1.4

Hibernate框架中,使用JDBC语法

/*** 调用存储过程* * @param PRONAME* @return*/public CallableStatement citePro(final String PRONAME){Session session = getCurrentSession();CallableStatement pro = session.doReturningWork(new ReturningWork<C

ORACLE语法-包(package)、存储过程(procedure)、游标(cursor)以及java对Result结果集的处理

陈科肇 示例: 包规范 CREATE OR REPLACE PACKAGE PACK_WMS_YX IS-- Author : CKZ-- Created : 2015/8/28 9:52:29-- Purpose : 同步数据-- Public type declarations,游标 退休订单TYPE retCursor IS REF CURSOR;-- RETURN vi_co_co

ElasticSearch的DSL查询⑤(ES数据聚合、DSL语法数据聚合、RestClient数据聚合)

目录 一、数据聚合 1.1 DSL实现聚合 1.1.1 Bucket聚合  1.1.2 带条件聚合 1.1.3 Metric聚合 1.1.4 总结 2.1 RestClient实现聚合 2.1.1 Bucket聚合 2.1.2 带条件聚合 2.2.3 Metric聚合 一、数据聚合 聚合(aggregations)可以让我们极其方便的实现对数据的统计、分析、运算。例如:

react笔记 8-16 JSX语法 定义数据 数据绑定

1、jsx语法 和vue一样  只能有一个根标签 一行代码写法 return <div>hello world</div> 多行代码返回必须加括号 return (<div><div>hello world</div><div>aaaaaaa</div></div>) 2、定义数据 数据绑定 constructor(){super()this.state={na

python基础语法十一-赋值、浅拷贝、深拷贝

书接上回: python基础语法一-基本数据类型 python基础语法二-多维数据类型 python基础语法三-类 python基础语法四-数据可视化 python基础语法五-函数 python基础语法六-正则匹配 python基础语法七-openpyxl操作Excel python基础语法八-异常 python基础语法九-多进程和多线程 python基础语法十-文件和目录操作