Flutter入门篇(三):dart语言(1)

学习参考:https://zhuanlan.zhihu.com/p/82731470


1.基本:

1.注释用//

2.语句后面要有;

3.从main函数开始执行

main(List<String> args) {
  print('Hello World');
}

4.定义变量

变量类型 变量名称 = 赋值;

5.bool变量用true和false

6.字符串用“xxx”或者'xxx'

以上和C++一样

7.打印:print('xxxxxx')和python一样

8.名称:大多用小驼峰命名法,除了一些集合类型和String是首字母大写

9.函数:默认所有函数都有返回值,如果没指定则返回null

10.三引号可以表示多行字符串

var message1 = '''
哈哈哈
呵呵呵
嘿嘿嘿''';


2.类型

a.runtimeType用于获取当前变量的类型

类型推导:

var:相当于c++的auto,当一个变量用var定义被赋值之后改变量类型就不能被改变

dyanmic: 和var一样但是在被赋值后还是可以改变类型(var升级版)

dynamic name = 'coderwhy';
print(name.runtimeType); // String
name = 18;
print(name.runtimeType); // int

const: 和c++一样

final: 类似与const但是可以用一个函数给他赋值(const升级版)

基本类型和类型转换:

基本类型:int, double, String

类型转换:

var one = int.parse('111');//字符串转int
var two = one.toString();//int转字符串
String s = '0.8931'
var num = s.toStringAsFixed(2)//保留两位小数

集合类型:

List:列表

var letters = ['a', 'b', 'c', 'd'];//不指定类型
List<int> numbers = [1, 2, 3, 4];//指定类型

Set:集合(Set无序,且元素不重复)

var letters = {'a', 'b', 'c', 'd'};//不指定类型
Set<int> numbers = {1, 2, 3, 4};//指定类型

Map:字典

// 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}');

集合操作:

获取长度

print(xxx.length);

增加删除包含

xxx.add(3)增加元素3
xxx.remove(2)删除元素2
xxx.removeAt(2)删除第二个元素(列表)
xxx.contains(2)是否包含2

Map操作

xxx['key_name']获取键值
xxx.entries获取所有条目(entry)
xxx.keys获取所有键名
xxx.values获取所有键值
xxx.containsKey/ xxx.containsValue是否包含该键、键值
xxx.remove('xxx')根据key删除某元素


3.函数

返回值 函数的名称(参数列表) {
  函数体
  return 返回值
}

箭头语法:

sum(a, b) => a + b//类似于python中的lambda

参数:

1.位置可选参数: 

用{}表示(Set没有顺序)

printInfo1(String name, {int age, double height}) {
  print('name=$name age=$age height=$height');
}

可以给{}内的部分传参

// 调用printInfo1函数
printInfo1('why'); // name=why age=null height=null
printInfo1('why', age: 18); // name=why age=18 height=null
printInfo1('why', age: 18, height: 1.88); // name=why age=18 height=1.88
printInfo1('why', height: 1.88); // name=why age=null height=1.88

命名可选参数, 可以指定某个参数是必传的(使用@required)

printInfo3(String name, {int age, double height, @required String address}) {
  print('name=$name age=$age height=$height address=$address');
}

2.命名可选参数:

用[ ] 表示(List有顺序)

printInfo2(String name, [int age, double height]) {
  print('name=$name age=$age height=$height');
}

 传参顺序不可以变动

// 调用printInfo2函数
printInfo2('why'); // name=why age=null height=null
printInfo2('why', 18); // name=why age=18 height=null
printInfo2('why', 18, 1.88); // name=why age=18 height=1.88

3.参数默认值

只有可选参数才可以有默认值

// 参数的默认值
printInfo4(String name, {int age = 18, double height=1.88}) {
  print('name=$name age=$age height=$height');
}

 4.函数可以作为参数或者返回值来用,类型名为Function

5.词法作用域

就是c++中的变量作用域

和C++不同,dart会优先用自己作用域中的变量,如果没有会一层层往外找

6.词法闭包

类似python中的偏函数

main(List<String> args) {
  makeAdder(num addBy) {
    return (num i) {
      return i + addBy;
    };
  }

  var adder2 = makeAdder(2);//2传给addBy
  print(adder2(10)); // 12//10传给i
  print(adder2(6)); // 8

  var adder5 = makeAdder(5);
  // 15 虽然上面2传给addBy,但是在这里会找到自己最近的作用域,所以这里的addBy = 5
  print(adder5(10)); 
  print(adder5(6)); // 11
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值