https://repl.it/repls/HotTemporalMethod
在线代码编写 ide
和绝大多数的编译型语言一样,dart 要求以main 函数作为执行的入口
基本数据类型
num, bool, String, List, Map (但是没有数组的概念)
String 是由UTF-16的字符串组成, 和javascript 一样,构造字符串字面量的时候,即能使用单引号,也能使用双引号.还能在字符串中嵌入变量或者表达式
num - > 64位整形 和 double
//通过类型推导来定义var name = "hi"; //String类型var age = 18; //int类型var high = 1.70; //double类型//也可以通多定义类型String name = "bruce"; //String类型int age = 18; //int类型var one = int.parse('111');var two = double.parse('12.22');//想玩动态类型dynamic value = 18;print("value = $value");value = "bruce";print("value = $value");value = 3.5;print("value = $value");Object val = 18;print("val = $val");val = "bruce";print("val = $val");val = 3.5;print("val = $val");作者:Flutter编程指南链接:https://juejin.im/post/5c52a386f265da2de25b5c36来源:掘金著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。//额外String str2 = """Hi,BruceThis is Xiaoming."""; //使用带有单引号或双引号的三重引号可以创建多行字符串List arr = ["Bruce", "Nick", "John"];print("arr = $arr");var s = 'cat';var s1 = 'this is a string: ${s.toUpperCase()}';
容器类
// List定义// 1.使用类型推导定义var letters = ['a', 'b', 'c', 'd'];print('$letters ${letters.runtimeType}');// 2.明确指定类型List<int> numbers = [1, 2, 3, 4];print('$numbers ${numbers.runtimeType}');其中,set可以这样来定义:其实,也就是把[]换成{}就好了。Set和List最大的两个不同就是:Set是无序的,并且元素是不重复的。// Set的定义// 1.使用类型推导定义var lettersSet = {'a', 'b', 'c', 'd'};print('$lettersSet ${lettersSet.runtimeType}');// 2.明确指定类型Set<int> numbersSet = {1, 2, 3, 4};print('$numbersSet ${numbersSet.runtimeType}');// Map的定义// 1.使用类型推导定义var infoMap1 = {'name': 'why', 'age': 18};print('$infoMap1 ${infoMap1.runtimeType}');// 2.明确指定类型Map<String, Object> infoMap2 = {'height': 1.88, 'address': '北京市'};print('$infoMap2 ${infoMap2.runtimeType}');
函数
返回值 函数的名称(参数列表) {函数体return 返回值}String getName() {return "Bruce";}//Dart 可以像 python 一样,方法声明时返回值可写可不写sum( var num1){return num1 + 10;}//(可以像js 使用箭头函数,简化)如果函数体中只包含一个表达式,则可以使用简写语法String getName() => "Bruce";//可变长参数// 函数定义void showDesc({var name, var age}) {if(name != null) {print("name = $name");}if(age != null) {print("age = $age");}}// 函数调用showDesc(name: "Bruce");// 输出结果name = Bruce使用 [] 来标记可选参数。 以及默认参数// 函数定义void showDesc(var name, [var age = 18]) {print("name = $name");if(age != null) {print("age = $age");}}// 函数调用showDesc("Bruce");// 输出结果name = Bruceage = 18// 可选参数,用 xx:xx 传值void test1(var name1, {var name2 = 10, var name3 = 20}) {print("result = $name1,$name2,$name3");}// 位置参数,位置是固定的,你要是想给 name3赋值,必须先给name2赋值void test2(var name1, [var name2, var name3]) {print("result = $name1,$name2,$name3");}test1("AA", name2: 55);test2("BB",18,19);
不支持同名函数的重载
bool isZero(int number) => number == 0;
类
Dart 是面向对象的语言, 每一个对象都是类的实例,都继承自 顶层类型Object.
但是dart 没有 private public 关键字. 需要用 _ 来限制范围 ,类似private
//高阶函数void man(){print("man");}var f = man;f();
异常
// 定义一个抛出异常的函数void handleOperator() => throw Exception("this operator exception!");// 函数调用try {handleOperator();} on Exception catch(e) {print(e);} finally { // finally语句可选print("finally");}// 输出结果Exception: this operator exception!finally
