iT邦幫忙

2023 iThome 鐵人賽

DAY 7
0

1.定義

  • 在 Dart 中可以使用 void 或其他如 int、String、bool 等資料型態來定義函數。

  • 函數:

     返回類型 函數名(參數1,參數2,…){
     執行內容
     返回值
     }
    

    又等於:

     輸出類型 函數名(輸入類型 輸入值1,輸入類型 輸入值2,…){
     執行內容
     返回值
     }
    
  • 使用void定義函數:不需要返回值(return)。

    • 不接受參數
      (main函數是程式的起始點,用於啟動程式。)
      https://ithelp.ithome.com.tw/upload/images/20230922/20163063u1sx8BCU2D.png

    • 接受參數
      函數 greet 接受一個名稱(name)作為參數
      https://ithelp.ithome.com.tw/upload/images/20230922/20163063WJ2waFnBIc.png

  • 使用int、String、bool:透過 return 關鍵字,dart函數可以返回一個值

    • 函數add 接受兩個整數參數並返回它們的總和
      https://ithelp.ithome.com.tw/upload/images/20230922/20163063z6YjjoMMqP.png
    • 返回的資料型態可以省略也可以使用var
      https://ithelp.ithome.com.tw/upload/images/20230922/20163063F6UM1YYIUQ.png

2、可選參數

使用{}或[]的參數可以選擇性的傳入值。可選參數需定義於固定參數後面,且須用問號加在參數類型後面來標記該參數可為空值!

  • {}:可以不照順序,但需要使用變數名稱傳值。
    https://ithelp.ithome.com.tw/upload/images/20230922/20163063gNN3a1K7go.png
  • []:不使用變數名稱,但須依照順序傳值。
    https://ithelp.ithome.com.tw/upload/images/20230922/201630633xBJtv4eDW.png
    (無照順序輸入參數)
    https://ithelp.ithome.com.tw/upload/images/20230922/20163063ZxScmoW3up.png

3.默認參數值

這裡直接用範例說明如何給參數提供預設值,範例中printPerson函數接受一個必填的 name 參數和兩個可選的 age、gender 參數,並為 age、gender參數分別提供了默認值20、'F'!
https://ithelp.ithome.com.tw/upload/images/20230922/20163063uSl88edCtx.png

4.匿名函數

  • 匿名函數也稱為Lambda 函數,是一種不需要命名的函數。匿名函數可以指派給變數,傳遞給其他函數作為參數,或者直接調用。
  • 在下面範例中,我們創建了一個名為 add 的變數,並將匿名函數賦值給它。該匿名函數接受兩個整數參數 a 和 b,然後返回a和b的總和。
    https://ithelp.ithome.com.tw/upload/images/20230922/201630637yHQotCwPs.png

5.將函數作為參數

  • 將函數作為參數傳遞給其他函數,稱為函數回調。函數回調可以將一個函數傳遞給另一個函數,並在特定事件發生時執行該函數。
  • 在這個範例中,我們定義了一個 processData 的函數,它接受一個List和一個回調函數callback。在 processData 中,將數據處理完後調用回調函數,將處理結果傳遞給它。在 main 函數中,我們將 printResult 函數作為回調傳遞給 processData,處理完數據後將結果印出。
    https://ithelp.ithome.com.tw/upload/images/20230922/20163063wgGuvUyYmi.png
    output:
    https://ithelp.ithome.com.tw/upload/images/20230922/201630633mL2COGTnQ.png

參考資料:
https://dart.dev/language/functions
https://lihsinplayer.medium.com/dart%E5%85%A5%E9%96%80-3eb57099da48
https://medium.com/@newpage0720/dart%E7%9A%84%E5%87%BD%E6%95%B8%E7%AD%86%E8%A8%98-6471c4ac15ff


上一篇
Day6 [Dart]流程控制
下一篇
Day8 [Dart]類別(上)
系列文
用30天學習做出我的第一個Flutter App30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言