iT邦幫忙

2023 iThome 鐵人賽

DAY 4
0

一、Dart的資料型態

接著幾天會進行Dart的語法練習~(練習工具:https://dart.dev/#try-dart)
在練習之前先來了解一下Dart都有哪些資料型態!

  • Number:num、int(整數)、double(浮點數)
  • Strings:String (Dart沒有char!)
  • Booleans:bool
  • Lists:List
  • Maps:Map

二、宣告變數

  • 指定型態的宣告

https://ithelp.ithome.com.tw/upload/images/20230919/20163063QWHrborJ7p.png

  • Var

除了指定資料型態的宣告,Dart也可以直接用var來宣告變數,會自動判別資料的型態
所以可以將上面的程式碼改為用var來宣告並使用runtimeType來判斷變數的資料型態:
https://ithelp.ithome.com.tw/upload/images/20230919/201630635MmVxy5gZN.png
但是要注意使用var宣告變數時:
1. 給定初始值,就不能再賦予變數不同資料型態的值(原本name已經賦予資料型態為字串,不能再改為數值)
https://ithelp.ithome.com.tw/upload/images/20230919/20163063rWK1hQqfam.png
2. 一開始沒有給初始值,後面就可以更改成任意型態的變數
https://ithelp.ithome.com.tw/upload/images/20230919/20163063WQhnbAzGUL.png

  • Const&Final

    如果要宣告一個不會改變的變數,那就可以使用const跟final。
    兩者區別在於,const在宣告的時候就要給定初始值,final可以先不賦予初始值之後再給,但只能設定一次。使用上兩個都可以直接宣告或是和資料型態一起使用。

    1.final(可以先不給初始值)
    https://ithelp.ithome.com.tw/upload/images/20230919/20163063ov7dmfHlwA.png
    因為使用final宣告變數name,變數就不能再改變,此處改變name值,就會出現錯誤。
    https://ithelp.ithome.com.tw/upload/images/20230919/201630638YjcAyhsUp.png

    2.const(一定要給初始值才能執行!)
    https://ithelp.ithome.com.tw/upload/images/20230919/20163063b3iYIz2oUj.png
    const除了宣告變數之外也可以宣告陣列!
    https://ithelp.ithome.com.tw/upload/images/20230919/20163063SfaQ9WxrSU.png
    而被Const宣告的陣列,一樣不能再改變其值。
    https://ithelp.ithome.com.tw/upload/images/20230919/20163063dgnurIeNkD.png

  • Object(編譯階段檢查類型)& Dynamic(編譯階段不檢查類型)

    object和dynamic都是用來宣告資料型態可以任意改變的變數

    1.object(編譯階段檢查類型)
    https://ithelp.ithome.com.tw/upload/images/20230919/20163063nyf45OPDTl.png

    2.dynamic(編譯階段不檢查類型)
    https://ithelp.ithome.com.tw/upload/images/20230919/20163063WT5Cciza1n.png
    而object和dynamic不同的地方在於:使用dynamic宣告的變數在編譯階段是不會進行檢查的;object則會檢查,所以在下面的程式碼中a和b其實都沒有test()方法,但只有a.test()被檢查出有問題。
    https://ithelp.ithome.com.tw/upload/images/20230919/20163063c6KDljTCPA.png

今日總結:

  1. 用Var宣告變數有給予初始值,就不能再改變型態;沒有給之後就可以更改型態。
  2. Const&Final用來宣告不會改變的變數。
  3. Object & Dynamic宣告資料型態可以任意改變的變數。

參考資料:
https://clay-atlas.com/blog/2021/02/25/dart-cn-tutorial/?amp=1
https://medium.com/@katelin013/flutter-%E8%B5%B7%E6%AD%A5%E8%B5%B0-%E8%81%8A%E8%81%8A-dart-%E7%9A%84%E5%9F%BA%E6%9C%AC%E4%BB%8B%E7%B4%B9-424a589a136c
https://dart.dev/language/functions


上一篇
Day3 解決開發環境安裝時的問題
下一篇
Day5 [Dart]運算符Operator
系列文
用30天學習做出我的第一個Flutter App30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言