Dart入门
Dart入门
参考:
安装Dart,参考Get the Dart SDK,根据系统来安装
Dart SDK有两个release channels
- stable channel: stable releases, updated no more frequently than every 6 weeks; 稳定
- dev channel: prereleases, usually updated 1/week; 开发
在Mac上,使用如下的命令:
brew tap dart-lang/dart
brew install dart
参考IntelliJ & Android Studio,为IntelliJ IDEA 和 Android Studio添加Dart支持
一些基础知识参考翻译Dart 编程语言概览
一些重要的概念
1.Dart是面向对象的编程语言,所有的东西都是对象。变量、number、函数都是对象
变量
使用var
表示变量
默认值
未初始化的变量默认值是 null
常量和固定值
如果定义的变量不会变化,可以使用final
或者const
来指名。const
表示的是编译时(compile-time constant)常量
编译时常量和运行时常量
可参考java中的编译时常量与运行时常量
final name = 'Bob'; // Without a type annotation
name = 'Alice'; // Error: a final variable can only be set once.
const bar = 1000000; // Unit of pressure (dynes/cm2)
const double atm = 1.01325 * bar; // Standard atmosphere
注释
文档注释
文档注释可以是多行注释,也可以是单行注释, 文档注释以 ///
或者 /**
开始
类型
Number
Number 有两种类型
- int
- double
int amount1 = 100;
var amount2 = 200;
print("amount1: $amount1, amount2: $amount2"); //amount1: 100, amount2: 200
String->Number,或者Number->String
// String -> int
var one = int.parse('1');
assert(one == 1);
// String -> double
var onePointOne = double.parse('1.1');
assert(onePointOne == 1.1);
// int -> String
String oneAsString = 1.toString();
assert(oneAsString == '1');
// double -> String
String piAsString = 3.14159.toStringAsFixed(2);
assert(piAsString == '3.14');
String
Dart 字符串是一组 UTF-16 单元序列。 字符串通过单引号或者双引号创建
多行字符串
var s1 = '''
You can create
multi-line strings like this one.
''';
var s2 = """This is also a
multi-line string.""";
raw stringr
前缀表示原始字符串
var s = r'In a raw string, not even \n gets special treatment.';
print(s); //In a raw string, not even \n gets special treatment.
Boolean
Dart 使用 bool
类型表示布尔值。Dart 只有字面量 true
and false
是布尔类型
dynamic
尽管 Dart 是强类型的,但是 Dart 可以推断类型,所以类型注释是可选的。 在上面的代码中, number 被推断为 int 类型。 如果要明确说明不需要任何类型, 需要使用特殊类型 dynamic
dynamic weakVariable = 100;
print("weakVariable is $weakVariable"); //weakVariable is 100
weakVariable = 'Dart Programming';
print("weakVariable is $weakVariable"); //weakVariable is Dart Programming
操作符
?.
?.
叫做Conditional member access
Like
.
, but the leftmost operand can be null; example:foo?.bar
selects propertybar
from expressionfoo
unlessfoo
isnull
(in which case the value offoo?.bar
is null)
在foo
不为null
的时候,foo?.bar
获取foo
的bar
属性。如果为null
,foo?.bar
的值为null
如下的例子,获取null
变量的的某个属性,控制台会提示错误
class Num {
int num = 10;
}
void main() {
var n = Num();
n = null;
int number = n.num;
}
使用?.
就OK了
void main() {
var n = Num();
n = null;
int number = n?.num;
print(number); //null
}
??
??
相当于是?:
condition ? expr1 : expr2
expr1 ?? expr2
例如,给上面的例子一个默认值
void main() {
var n = Num();
n = null;
int number = n?.num ?? 10;
print(number); //10
}
??=
??=
表示在变量为null
时赋值
// Assign value to a
a = value;
// Assign value to b if b is null; otherwise, b stays the same
b ??= value;
..
..
表示级联操作符(Cascade)。可对同一对象执行一系列操作。类似于Java语言里点点点处理或JavaScript里的Promise的then处理。级联操作的主要的目的是为了简化代码
querySelector('#confirm') // Get an object.
..text = 'Confirm' // Use its members.
..classes.add('important')
..onClick.listen((e) => window.alert('Confirmed!'));
等同于
var button = querySelector('#confirm');
button.text = 'Confirm';
button.classes.add('important');
button.onClick.listen((e) => window.alert('Confirmed!'));
类型测试操作符
操作符 | 含义 |
---|---|
as | 类型转换 |
is | 当对象是相应类型时返回true |
is! | 当对象不是相应类型时返回true |
var num = 10;
if (num is int) {
print("integer");
}
上一篇: js实现动态数码时钟
下一篇: Linux虚拟机安装教程