Dart 语言简易教程(一)

在 InteIIiJ IDEA 中搭建 Dart 的开发环境: http://www.jianshu.com/p/fa275a08b083

Dart 语言简易教程(一)

一个简单的dart 程序

// Define a function.
printNumber(num aNumber) {
  print('The number is $aNumber.'); // Print to console.
}

// This is where the app starts executing.
main() {
  var number = 42; // Declare and initialize a variable.
  printNumber(number); // Call a function.
}

从这个程序里面我们可以看到如下的东西:

  • 使用//来注释。同时/* ...*/也可以用来注释。
  • num 是一个数据类型,定义在语言中。同样的类型还有Stringintbool
    就是说Dart语言是有数据类型的概念的。这点与Python语言不同。
  • print() 是显示输出的方法。
  • '...'(或者"..."),表示是有个 string 类型的数据。
    这一点与 Python 中string 类型数据一样的使用方法。
  • var 定义了一个变量,但是没有指定特定的数据类型。
    这种用法是很灵活的,既可以像Java类似的语言采取强数据类型,也可以像Python那样在第一次赋值的时候确认数据类型。

按照Dart 的编程规范,使用2个空格来缩进。
这一点与Python 语言建议的4个空格不一样。

一些重要的概念

  • 所有的东西都是对象,无论是变量,数字,函数等。
    所以的对象都是类的实例。
    所有的对应都继承自内置的Object类。

  • 程序中指定数据类型是为了指出自己的使用意图,并帮助语言进行语法检查。但是,指定类型不是必须的。
    Dart 语言是弱数据类型。

  • Dart 代码在运行前解析。
    指定数据类型和编译时的常量,可以提高运行速度。

  • Dart 程序有统一的程序入口: main()
    这一点是C / C++语言相像。

  • Dart 支持顶级的变量定义。

  • Dart 没有publicprotectedand private的概念。
    但是如果变量或函数以下划线(_)开始,则该函数或变量属于这个包私有(private)的方法。

  • Dart 中变量或函数以下划线(_)或字母开始,后面接上任意组合的下划线(_),数字或字母。
    这点与大部分的编程语言是一样的。

  • 严格区分expressionstatement

  • Dart 的工具可以检查出警告信息(warning)和错误(errors)。
    警告信息只是表明代码可能不工作,但是不会妨碍程序运行。
    错误可以是编译时的错误,也可能是运行时的错误。编译的错误将阻止程序运行,运行时的错误将会以exception的方式呈现。

  • Dart 使用 ; 来分割语句
    这点类似Java / C++, 但是与Python语言不同。

关键字

Dart 语言提供的关键字如下表所示:

1 2 3 4 5
abstract continue false new this
as default final null throw
assert deferred finally operator true
async do for part try
async dynamic get rethrow typedef
await else if return var
break enum implements set void
case export import static while
catch external in super with
class extends is switch yield
const factory library sync yield

变量(Variable

变量赋值的例子

// The variable called name contains a reference to a String object with a value of “Bob”.
var name = 'Bob';

默认值

没有初始化的变量都会被赋予默认值 null.
即使是数字也是如此, 因为在Dart 中数字也是一个对象。

int lineCount;
assert(lineCount == null);
// Variables (even if they will be numbers) are initially null.
```language

Note: The assert() call is ignored in production mode. In checked mode, assert(condition) throws an exception unless condition is true.

可选类型

也可以在定义的时候指定变量的类型。

String name = 'Bob';

指定数据类型可以更好的辨明自己的使用意图,编译器和IDE 工具可以根据这些类型信息来做检查,更早的发现问题。
如前文所说,通过指定类型,也可以减少编译和运行时间。

常量和固定值

  1. 如果定义的变量不会变化,可以使用finalconst来指明。
    也可以使用finalconst来代替类型声明。

    • final的值只能被设定一次。
    • const 是一个编译时的常量。( Const variables are implicitly final.)
    final name = 'Bob'; // Or: final String name = 'Bob';
    // name = 'Alice';  // Uncommenting this causes an error
    
  2. 通过对const类型做四则运算将自动得到一个const类型的值。

const bar = 1000000;       // Unit of pressure (dynes/cm2)
const atm = 1.01325 * bar; // Standard atmosphere
```language
  1. 可以通过const来创建常量的值
    就是说const[] 本身是构造函数。
// Note: [] creates an empty list.
// const [] creates an empty, immutable list (EIA).
var foo = const [];   // foo is currently an EIA.
final bar = const []; // bar will always be an EIA.
const baz = const []; // baz is a compile-time constant EIA.
// You can change the value of a non-final, non-const variable,
// even if it used to have a const value.
foo = [];
// You can't change the value of a final or const variable.
// bar = []; // Unhandled exception.
// baz = []; // Unhandled exception.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,585评论 18 139
  • 注:这是第三遍读《C语言深度解剖》,想想好像自从大学开始就没读完过几本书,其中谭浩强的那本《C语言程序设计(第四版...
    HavenXie阅读 1,714评论 1 6
  • TITLE: 编程语言乱炖 码农最大的烦恼——编程语言太多。不是我不学习,这世界变化快! 有时候还是蛮怀念十几、二...
    码园老农阅读 5,292评论 2 35
  • Dart 语言简易教程(一): http://www.jianshu.com/p/8a62b1a2fd75Dart...
    you的日常阅读 15,103评论 4 10
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,504评论 1 51