flutterchina / flutter-in-action

《Flutter实战》书稿。第二版书稿已上传,请移步新Repo。
https://book.flutterchina.club
8.67k stars 1.7k forks source link

Dart 到底是弱语言类型还是强语言类型? #279

Open zqHero opened 5 years ago

zqHero commented 5 years ago

看过一本书 :Flutter 技术入门和实战 中 介绍Dart是 弱语言类型。

亲测:

var demo = 0;

class MyApp2 extends StatelessWidget { @override Widget build(BuildContext context) { demo = 11; // TODO: implement build return new MaterialApp( title: "thisNavDemo", home: new Scaffold( appBar: new AppBar( title: new Text('this is demo'), ), body: new Center( child: RaisedButton( onPressed: () { print("============ $demo"); ...........................................

demo 是可以被重新赋值的,但不可以更改类型,更改类型会飘错。。。。

selcarpa commented 5 years ago

dart是强类型语言,没有强语言类型和弱语言类型的说法,此处强调的是类型是否可变。

evanwsu commented 5 years ago

使用var demo = 0 ,其实已经定义了demo是int型,dart会根据值来推断类型,所以再更改demo的类型就会报错。你可以将demo定义为dynamic, 可以实现更改类型。

SendorWang commented 3 years ago

之前是可选类型,这个可选类型和swift的可空类型是完全不同的概念。 2.0以后,dart变成了强类型语言