Linuxword Global
当前位置: 软件下载 > Dart 語言入門 1: 簡介、開發環境、變數、內建型別介紹

8315061

Dart 簡介

Dart 是由 google 主導並開發的語言。可搭配也是 google 主導的 flutter 平台框架,一套程式可以開發 Android、iOS App、Web、桌面應用程式等等,並可應用在 Windows、macOS、Linux、Fuchsia(Google下一代作業系統)。看到這麼多的優點,未來錢途不可限量,開始來好好研究一下吧。

Dart 開發環境

在前篇 Flutter 安裝 macOS開發環境 安裝 Flutter 開發環境後就可以使用 Dart 語言。
但對於初學者而言,有現成的Dart平台,不需要這麼麻煩,要安裝語言環境才能開始學習,只要連上網路,就即可使用,那就是DartPad。
201218522kV3mCS7U4
也可以先安裝Homebrew軟體後,再安裝Dart SDK
先在終端機安裝Homebrew 輸入下面指令

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

接下來進行安裝 Dart SDK

brew tap dart-lang/dart
brew install dart -devel

安裝後執行

brew info dart

驗證是否安裝正確
20121852wPivxqgIPJ
Dart官網也有針對各個OS有詳細的安裝說明。

開始學習

變數

使用 var 來宣告 變數
要注意的是,若一開始未給值,變數 default 為 null,之後可以變換為其他型態;

void main() {
  var name;
  print(name);
  
  name = 'Dragon';
  print(name);
  
  name = 12345678;
  print(name);
}

201218529QExobhHF1
反之,若是一開始給值,之後就只能使用該值的型態,不能變換型態。

void main() {
  var name = 'Dragon';
  print(name);

  name = 12345678;
  print(name);
}

20121852wxYJJqQCYN
不過個人還是建議,任何變數一開始就制定好其型態。

void main() {
  String name = 'Dragon';
  print(name);
}

201218527zsf19y47i

常數

若想設置常數,可以使用 final、const 進行修飾,只能被給值一次。而const 是編譯時的常數,所以若是要宣告成const 的纇(class),則必須加上 static,即 static const (順序不可顛倒)。而實體變數則是要宣告成 final 而不可以是 const。

void main() {
  const PI = 3.1415926;
  var radius ;
  radius = 5;
  final circumference = 2 *radius* PI;
  print(circumference);
}

20121852YPKCiKyHps

內建型別(Built-in types)

Dart 语言支持下列的类型:
numbers:分為兩種
int: 整數
double: 浮點數

var x = 1;               //整數
var hex = 0xDEADBEEF;    //整數
var y = 1.1;             //浮點數
var exponents = 1.42e5;  //浮點數
double z = 1;            //浮點數Equivalent to double z = 1.0.

strings: 字串

void main() {
  var s = '字符串插值';
  print('Dart 有$s,使用起来非常方便。'); //可用$帶變數到字串
  print('Dart 有字符串插值' ',使用起来非常方便'); //可以用“”或‘’串字串
  print('Dart 有字符串插值' + ',使用起来非常方便'); //可以用+串字串
  print('使用${s.substring(3, 5)}表達式也非常方便。'); //可用${}處理字串
  s = '''  多行   
  字串''';                             //使用 ‘’‘ 或 """ 展現多行字串
  print(s);
}

20121852znpHEQoeUx
booleans: 布林值,使用 bool 關鍵字表示布林型態。布林值只有: true、false。

void main() {
  var t = true;
  var f = false;
  print(t);
  print(f);
}

20121852gQCtFK1ttY

lists: 清單(arrays)類似矩陣

void main() {
  //宣告固定長度
  var fixedList1 = new List(2);
  fixedList1[0] = 1;
  fixedList1[1] = 'a';
  print(fixedList1);
  var fixedList2 = [1,2,3,"Hello",'World'];
  print(fixedList2);
  //宣告可變長度
  var growableList = [];
  growableList.add("x");
  growableList.add("y");
  growableList.add("z");
  print(growableList.length);
  print(growableList);
  growableList.forEach(print);
}

20121852kztZqo65AI
sets:集合,集合中的元素是沒有順序且不能重複,因此不能使用索引值去取值(如set[0]),但可以列舉出來。
因為是集合,所以可以使用交集、聯集等等運算。

void main() {
  var colorSet1 = {'green', 'blue', 'yellow', 'red'};
  var colorSet2 = {'red', 'black', 'white', 'yellow'};
  print(colorSet1);
  for (var color in colorSet1) {
    print(color); //不可使用 colorSet1[0]    
  }
  print("交集:"+colorSet1.intersection(colorSet2).toString());
  print("聯集:"+colorSet1.union(colorSet2).toString());
  print("差集:"+colorSet1.difference(colorSet2).toString());
}

20121852n65HzsGEU7
maps: Map 是以 key-value的形式儲存,Map中的key是不可以重複,如果key不存在則回傳null。

void main() {
  var gifts = Map();
  gifts['first'] = 'partridge';
  gifts['second'] = 'turtledoves';
  gifts['fifth'] = 'golden rings';
  print(gifts);
  var nobleGases = Map();
  nobleGases[2] = 'helium';
  nobleGases[10] = 'neon';
  nobleGases[18] = 'argon';
  print(nobleGases);
  var colorMap = {
    'black': '#000000',
    'yellow': '#FFFF00',
    'white': '#FFFFFF',
    'red': '#FF0000'
  };
  print(colorMap['red']);
}

20121852buxcGaliOn
runes: (用于在字符串中表示 Unicode 字符),要先安裝Characters package。
首先於 pubspec.yaml 檔案加上

dependencies:
characters: ^1.0.0

20121852LIxvb1wmwg
安裝
20121852kARP2usYFs
接下來就可以import 來使用

mport 'package:characters/characters.dart';

void main() {
  var hi = 'Hi ??';
  print(hi);
  print('The end of the string: ${hi.substring(hi.length - 1)}');
  print('The last character: ${hi.characters.last}\n');
}

201218522TYBRDrEiX
symbols:符號,表示操作符或者標識符。也許從來不會用到Symbol,但是該功能對於通過名字來引用標識符的情況是非常有價值的,特別是混淆後的代碼,標識符的名字被混淆了,但是Symbol的名字不會改變,下面列下例子:

//在標識符前加 # 前缀,來獲取Symbol
//#radix
//#bar
void main() {
  print(#n == new Symbol('n')); //輸出:true
  var name = 'dragon';
  Symbol symbol = #name;
  print(symbol); //輸出:Symbol("name")
  print(#name); //輸出:Symbol("name")
  print(name);
}

20121852ahAWMXlNp1

「梦想一旦被付诸行动,就会变得神圣,如果觉得我的文章对您有用,请帮助本站成长」

赞(0) 打赏
一分也是爱

支付宝扫一扫打赏

微信扫一扫打赏

上一篇:

下一篇:

相关推荐

博客简介

本站CDN采用VmShell免费提供离中国大陆最近的香港CMI高速网络做支撑,ToToTel打造全球最快速的边沿网络支撑服务,具体详情请见 :https://vmshell.com/ 以及 https://tototel.com/,网站所有的文件和内容禁止大陆网站搬迁复制,谢谢,VPS营销投稿邮箱: admin@linuxxword.com,我们免费帮大家发布,不收取任何费用,请提供完整测试文稿!

精彩评论

友情链接

他们同样是一群网虫,却不是每天泡在网上游走在淘宝和网游之间、刷着本来就快要透支的信用卡。他们或许没有踏出国门一步,但同学却不局限在一国一校,而是遍及全球!申请交换友链

站点统计

  • 文章总数: 2341 篇
  • 草稿数目: 13 篇
  • 分类数目: 6 个
  • 独立页面: 0 个
  • 评论总数: 2 条
  • 链接总数: 0 个
  • 标签总数: 6116 个
  • 注册用户: 139 人
  • 访问总量: 8,652,930 次
  • 最近更新: 2024年4月28日