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,Bruce
This 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 = Bruce
age = 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