初探 Dart 语法 01
Posted 熊喵先生
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初探 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 和 Kotlin
print(url.substring(3, 9)); //字符串截取 substring 方法,类似 Java 和 Kotlin
print(url.codeUnitAt(0)); //取当前索引位置字符的 UTF-16 码
print(url.startsWith("https")); //当前字符串是否以指定字符开头,类似 Java 和 Kotlin
print(url.endsWith("/")); //当前字符串是否以指定字符结尾,类似 Java 和 Kotlin
print(url.toUpperCase()); //大写,类似 Java 和 Kotlin
print(url.toLowerCase()); //小写,类似 Java 和 Kotlin
print(url.indexOf("ph")); //获取指定字符的索引位置,类似 Java 和 Kotlin
print(url.contains("http")); //字符串是否包含指定字符,类似 Java 和 Kotlin
print(url.trim()); //去除字符串的首尾空格,类似 Java 和 Kotlin
print(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);//true
print(distance is! int);//true
print(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的主要内容,如果未能解决你的问题,请参考以下文章