从下面开始学习DART编程
以下是一个简单的示例:
main(){ var number = 42; print(number); } 程序说明,dart是一个强大的脚本类语言,可以不预先定义变量类型 ,自动会类型推倒,主程序必须要先有一个main()主函数方法 以上是基本示例 至于函数返回值 和参数,暂时不讲,
在学习Dart语言时,请记住以下事实和概念:
- 在变量中可以放置的所有东西都是对象,而每个对象都是类的实例。无论数字、函数和null都是对象。所有对象都继承自[Object]类。
- 尽管Dart是强类型的,但类型声明是可选的,因为Dart可以推断类型。 在上面的代码中,数字被推断为int类型。 如果要明确说明不需要任何类型,请使用[特殊类型dynamic]。
- Dart支持通用类型,如List<int>(整数列表)或List<dynamic>(任何类型的对象列表)。
- Dart支持顶级函数(如main()),以及绑定到类或对象(分别是静态方法(static)和实例(instance)方法)的函数。您还可以在函数(嵌套或局部函数)中创建函数。
- 类似地,Dart支持顶级变量,以及绑定到类或对象(静态和实例变量)的变量。实例变量有时被称为字段或属性。
- 与Java不同,Dart没有公开、保护和私有的关键字。如果标识符以下划线(_)开头,则该标识符对其库是私有的。有关详细信息,请参见[库和可见性]。
- 标识符可以以字母或下划线(_)开头,然后是这些字符加上数字的任何组合。
- 有时候,某事物是一个表达(expression )还是一个语句(statement)是很重要的,所以这两个词要准确。
- Dart工具可以报告两种问题:警告和错误。警告只是表明您的代码可能不工作,但它们不会阻止您的程序执行。错误可以是编译时错误,也可以是运行时错误。编译时错误阻止了代码的执行;运行时错误导致代码执行时引发异常。
dart 关健字比健多,
下标中列出了Dart中的所有关键词
abstract (1) | do | import (1) | super |
as (1) | dynamic (1) | in | switch |
assert | else | interface (1) | sync* (2) |
async (2) | enum | is | this |
async* (2) | export (1) | library (1) | throw |
await (2) | external (1) | mixin (1) | true |
break | extends | new | try |
case | factory (1) | null | typedef (1) |
catch | false | operator (1) | var |
class | final | part (1) | void |
const | finally | rethrow | while |
continue | for | return | with |
covariant (1) | get (1) | set (1) | yield (2) |
default | if | static (1) | yield* |
deferred (1) | implements (1) |
(1)带有上标1的单词是内置标识符。避免使用内置标识符作为标识符。如果尝试为类或类型名使用内置标识符,则会发生编译时错误。
(2)使用上标2的单词是在Dart的1.0版本之后添加的与异步支持相关的更新的、有限的保留字。在以async, async*, 或者 sync* 标记的任何函数体中,不能使用async, await, 或者 yield作为标识符。有关更多信息,请参见异步支持。关键字表中的所有其他词都是保留词。不能使用保留词作为标识符。
变量与默认值
定义变量可以 var n =5; 也可以简成 int n = 5; 暂不支持golang或者python 那种高级多定义方法
须要说明的是 var 后就不要写类型 , 写了类型 不要var 两者都写 var a int = 5; 报错
定义字符串:
var s1 = 'Single quotes work well for string literals.';var s2 = "Double quotes work just as well."; var s3 = 'It\'s easy to escape the string delimiter.'; var s4 = "It's even easier to use the other delimiter."; 同样支持 \n \t \r 这些写法
以下关于数字定义
数字类型 numbers 有二种形式 一种是int 长度给操作系统有关,,32 位64位,最高长度不一样。。
一种是double 精度给ieee标准有关。。
int x = 1; 16进制写法int hex = 0xDEADBEEF; int bigInt = 34653465834652437659238476592374958739845729 关于字符定义 关于布尔 数据类型详细说明: 未初始化的变量的初始值为null。甚至具有数字类型的变量最初也是null,因为数字——就像dart中的其他东西一样——是对象。 程序默认值:如果变量只申明没有定义只会有默认值 ,转换类型失败也会返回默认值 ,稍后补充
int lineCount;assert(lineCount == null); // assert类似于if 语句,出错后会标飘红报错
Final 和 const修饰符 、、// 定义常量
这里有一个创建和设置final变量的例子:
final name = 'Bob'; // Without a type annotationfinal String nickname = 'Bobby';
您无法更改final变量的值:
name = 'Alice'; // Error: a final variable can only be set once.//这个是错误示例,在使用时final变量是不可以更改的
对于想要在编译时确定并且不再变的变量,使用const。如果const变量位于类级别,则将其标记为静态const。在声明该变量时,将该值设置为编译时常量,例如数字或字符串字面量、const变量或常量数字算术运算的结果:
const bar = 1000000; // Unit of pressure (dynes/cm2)const double atm = 1.01325 * bar; // Standard atmosphere
const关键字不只是声明常量变量。您还可以使用它来创建常量值,以及声明创建常量值的构造函数。任何变量都可以赋一个常量值。
var foo = const [];final bar = const []; const baz = []; // Equivalent to `const []`
您可以更改一个非final的非const变量的值,即使它曾经有一个const值: 这儿foo 是var 定义的,,所以值能改变,,
foo = [1, 2, 3]; // Was const [] 这儿返回正确值
你不能改变const变量的值: baz是 const定义的 不能改变
baz = [42]; // Error: Constant variables can't be assigned a value.