- var声明的变量
var 声明变量,可以接受任意类型。但是变量一经赋值,类型就被确定,不能再更改。这点与js 里不一样。
dart是强类型语言。 - object 与dynamic
dart中,所有类型都是object的子类,包括Function和Null。任何类型的数据都可以赋值给Object声明的对象.
dynamic是dart的关键字,与object一样,其字面含义是活跃的,声明的变量可以在赋值后更改类型。
不同点:
dynamic 声明的变量编译时会提供尽可能的属性与方法,而object声明的变量只能使用object的属性与方法。
dynamic 的这个特点使得我们在使用它时需要格外注意,这很容易引入一个运行时错误. - final 与 const
都声明常量。
final与const声明的变量一经赋值,不能再更改。
被final和const修饰的变量,类型在创建时可以省略。
区别:
final 是在第一次使用时初始化。编译时不确定。
const是编译时确定。 - function
dart中,函数也是一个对象,并且有一个类型Function。
这意味着函数可以赋值给变量或作为参数传递给其他函数,这是函数式编程的典型特征。
- 函数声明
bool isNoble(int atomicNumber) { return _nobleGases[atomicNumber] != null; }
注意:函数返回类型不会进行类型推断:如果不声明返回类型,则被当做dynamic处理。
函数可以声明成变量,或者被当成参数传递。
var sayHello = ()=>print "hello !";
作为参数被传递:
void execute(var callback) {
callback();
}
execute(() => print("xxx"))
- 函数参数
String run(String name,String length,[String fell],{String drink,String eat} ){
print '$name run $length';
}
注意:[] 和 {} 都表示可选参数
[]表示可选位置参数。function调用时,可以传也可以不传。
{} 不是js里的对象,而是可选参数(named parameter)。调用时,用key:value来指定。
如:
run("xiaoming","15km",drink:water,eat:bread);
使用“ = ”为位置参数设置默认值。
如:
String run(String name,String length,[String fell="happy"])