iT邦幫忙

2022 iThome 鐵人賽

DAY 5
0
自我挑戰組

30 天初探 Flutter系列 第 5

Day 5 - Dart 的運算子與函式

  • 分享至 

  • xImage
  •  

運算子 Operators

程式碼中的運算主要有包含了像數學一樣的算術運算、判斷式中常見的比較運算,另外還會有類型比對的運算以及邏輯運算,Dart 本身的官方文件還蠻齊全的,以下列出幾個比較常見及常用的運算:

我習慣直接用程式碼來說明,我想這樣實作的感覺比列出 + ⇒ 相加、- => 相減這些文字來的有感~

算術運算子(Arithmetic operators)

基本上就是做計算數值用的

void main() {
  int a = 5;
  int b = 2;
  
  print('a + b = ${a + b}'); // 數字相加
  print('a - b = ${a - b}'); // 數字相減
  print('a * b = ${a * b}'); // 數字相乘
  print('a ~/ b = ${a ~/ b}');  // a 除以 b 但 return 一個整數
  print('a / b = ${a / b}');  // a 除以 b
  print('a % b = ${a % b}'); // a 除以 b 得到的餘數
}

來看看結果吧~(小小改了一下看的更清楚實際上在做什麼)

Imgur

比較運算子(Equality and relational operators)

常常在判斷式中來使用,結果是 true / false 的布林值。

void main() {
  int a = 5;
  int b = 2;
  int c = 2;
  
  print('a = $a, b = $b, c = $c');
  print('a 等於 b ${a == b}'); 
  print('a 不等於 b ${a != b}');
  print('a 大於 b ${a > b}');
  print('a 小於 b ${a < b}'); 
  print('a 大於等於 c ${a >= c}'); 
  print('b 小於等於 c ${b <= c}');
}

來看看結果吧~

Imgur

最後一個來講
邏輯運算子(Logical operators)

void main() {
  print(!true);  // 反向表述,true 會變成 false,false 會變成 true
  print(true && false); // 邏輯的 AND,兩者都為 true,結果才會是 true
  print(true || false); // 邏輯的 OR,其中一方為 true,就為 true
}

Imgur

以上三個是我認為很常用的,剩下的我自己覺得有需要用到再去查找資料就可以囉!

函式 Function

我們現在練習時都將程式碼寫在 void main(){} 中,在未來專案擴大時,維護的程式碼不可能全部塞在這裡面,因此我們就可以利用定義函式,讓函式都分別執行任務。

以下來個簡單的例子:

void main() {
	// 呼叫 calculate 函式
  calculate();
}

// 定義函式
void calculate() {
  print('Call calculate function.');
}

這樣就是完成了一個簡單的函式,void 是指回傳的結果型態,而 calculate 就是函式的名稱,下面我們再介紹一下 () 裡面還可以帶進參數,而 {} 中就是我們想叫這個函式執行任務的程式碼。

來看看帶有參數的例子:

void main() {
  printProfile('Louis', 25);
}

void printProfile(String name, int age) {
  print('$name is $age years old.');
}

使用參數前面加上 type 來定義參數,name 是字串因此使用 String name 定義,而 age 為數值就使用 int age ,另外呼叫函式中參數的順序必須依照函式本身的順序來帶入,否則就會報錯,要特別注意。

匿名函式(Anonymous Function)

顧名思義,就是沒有名字的函式,方法一樣是用 () 定義參數,{} 中執行程式碼,蠻常使用在 List 的迭代上,下面直接來看一個例子

void main() {
	// 宣告一個含有四個元素的 list
  var list = ['apple', 'banana', 'orange', 'mango'];
	// 使用 forEach 方法來迭代
  list.forEach((item) => {
    print(item)
  });
}

forEach 方法中使用了匿名加上箭頭函式,會迭代 list 中每個元素當作參數傳進匿名函式中,這裡我們的參數命名為 item,接著印出 item 來觀察看看是不是真的依序印出了 list 中的水果吧~

Imgur

完成!之後在 Flutter 中也會很常使用到這方便的匿名函式,下一篇來講進階一點點的語法(condition 與 loop),最後再講一下物件導向與類別、建構式等,因為也是自己不熟悉的範圍,因此想挑出來練習寫寫看概念~

OK!我們明天見~


上一篇
Day 4 - Dart 的變數與資料
下一篇
Day 6 - Dart 的條件與循環控制
系列文
30 天初探 Flutter14
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言