⇒ 用一行指令表達 if-else 條件
範例:有一個函數會根據傳進來的布林值,來顯示不同的文字。
var state = true;
//If-else statement
void printState(bool state){
	if(state){
		print('Success');
	}else{
		print('Failure');
	}
}
//Conditional expressions
void printState(bool state){
	state ? print('Success') : print('Failure');
}
⇒ 若 expr1 為 null ,則回傳 expr2;反之,回傳 expr1。
範例:有一函數判斷文字是否為空,若否則回傳該文字,否則回傳預設值。
void user(String user){
	if(user != null){
		print('user is $user');
	}else{
		print('user is root');
	}
}
void user(String user){
	final result = user ?? 'root';
	print('user is $result');
}
只需要一行,就能夠處理文字為空的情況。
上篇文章的指派運算子中,其中有一個 ??=
⇒ 若運算子左方的值為空 (null),則使用右邊的值
我們可以將上面範例改寫為,
void user(String user){
    user ??= 'root';
    print('user is $user');
}
串接符號可以用來在相同的物件中,連續執行運算。
在 Kotlin 中,跟 apply{ } 具有相同的效果。
例如,有一個 Student 類別,裡面有幾個屬性。
class Student{
	var id;
  var name;
  var classRoomName;
  var teacher;
}
我們將 Student 類實例化,並設定屬性值。
var student = Student();
student.id = 1;
student.name = 'Andy';
student.classRoomName = '1A';
student.teacher = 'Mandy';
var student = Student()
    ..name = 'Andy'
    ..classRoomName = '1A'
    ..id = 3
    ..teacher = 'Mandy';
也可以不換行,如下
var student = Student()..name = 'Andy'..classRoomName = '1A'..id = 3..teacher = 'Mandy';
串聯符號除了可以使用在屬性,還可以應用在回傳值為 void 的函數上,
假如,類別裡面有回傳值為 void 的函數 (doSomething1, doSomething2)
class Student{
	var id;
  var name;
  var classRoomName;
  var teacher;
	void doSomething1(){
	}
	void doSomething2(){
	}
}
var student = Student()
    ..name = 'Andy'
    ..classRoomName = '1A'
    ..id = 3
    ..teacher = 'Mandy'
		..doSomething1()
		..doSomething2();
注意:只有回傳值為 void 的函數才能被串聯。

void main(){
	doSomething(); // ()
	var list = [1,2,3];
	assert(list[0] == 1); //[]
	
	var student1 = Student();
	student.name = 'Andy'; // .
	
	var student2 = Student();
	print(student2?.name); // ?.
}
void doSomething(){}
class Student{
	var String name;
}
Dart 的運算子根據下方的優先權表進行運算,如果同一運算式裡有不同的運算子,那麼將會跟去該優先權處理。

花了兩篇介紹運算子,大部分的運算子都可以在其他語言中看到,比較要注意的是:
然後,最重要的是,如果有在一個運算式裡面有多個運算子,一定要用括弧包起來,除了可以提昇閱讀力外,還可以避免後面的運算子優先權高過前面的優先權,反而造成了誤動作。