dart基础语法

Posted 彬彬杨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dart基础语法相关的知识,希望对你有一定的参考价值。

今晚重新把视频看了一遍,总结下 dart基础语法上部分的知识点

一.Hello World

老师当初教育的,管你什么语言,都给我从hello world开始

void main()
  print("hello world");
  • 一、Dart语言的入口也是main函数,并且必须显示的进行定义;

  • 二、Dart的入口函数main是没有返回值的;

  • 三、传递给main的命令行参数,是通过List<String>完成的。

    • 从字面值就可以理解List是Dart中的集合类型。

    • 其中的每一个String都表示传递给main的一个参数;

  • 四、定义字符串的时候,可以使用单引号或双引号;

  • 五、每行语句必须使用分号结尾,很多语言并不需要分号,比如Swift、javascript

二.变量 

2.1明确的声明

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

String name = “杨彬”

2.2类型推导(var/final/const)

var/dynamic/const/final 变量名称 = 赋值;

var  声明的是            变量

dynamic 忽略吧  在开发中, 通常情况下不使用dynamic, 因为类型的变量会带来潜在的危险

const/final 声明的是  常量(JAVA里面这玩意不可变)

那问题来了。这玩意都是常量,有啥区别

1.const 对应的是常量值,必须赋值,编译期间需要有一个确定的值

2.final可以通过计算 函数方法 获取,运行期间来确定       

var age = 24

三.数据类型

3.1数字类型

// 1.整数类型int
int age = 18;
int hexAge = 0x12;
print(age);
print(hexAge);

// 2.浮点类型double
double height = 1.88;
print(height);

记住一句话   整数用int,浮点数用double就行了。

字符串和数字之间的转化:

// 字符串和数字转化
// 1.字符串转数字
var one = int.parse('111');
var two = double.parse('12.22');
print('$one $one.runtimeType'); // 111 int
print('$two $two.runtimeType'); // 12.22 double

// 2.数字转字符串
var num1 = 123;
var num2 = 123.456;
var num1Str = num1.toString();
var num2Str = num2.toString();
var num2StrD = num2.toStringAsFixed(2); // 保留两位小数
print('$num1Str $num1Str.runtimeType'); // 123 String
print('$num2Str $num2Str.runtimeType'); // 123.456 String
print('$num2StrD $num2StrD.runtimeType'); // 123.46 String

 3.2布尔类型

无非跟java一个样  boolean   true false 

但是注意一个问题:

注意: Dart中不能判断非0即真, 或者非空即真

Dart的类型安全性意味着您不能使用if(非booleanvalue)或assert(非booleanvalue)之类的代码。

  var message = 'Hello Dart';
  // 错误的写法
  if (message) 
    print(message)
  

3.3字符串类型

var s1 = 'Hello World';
var s2 = "Hello Dart";
var s3 = 'Hello\\'Fullter';
var s4 = "Hello'Fullter";

使用$expression 来做拼接。其实像 java +

// 3.拼接其他变量
var name = 'coderwhy';
var age = 18;
var height = 1.88;
print('my name is $name, age is $age, height is $height');
 

3.4集合类型 

 Dart则内置了最常用的三种:List / Set / Map

List可以这样来定义:

// 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可以这样来定义:

  • 其实,也就是把[]换成就好了。

  • SetList最大的两个不同就是: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是我们常说的字典类型,它的定义是这样的:

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

四.函数

dart是没有java函数的重载的 切记

函数的定义方式:

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

4.1可选参数

可选参数可以分为 命名可选参数 和 位置可选参数

定义方式:

命名可选参数: param1, param2, ...位置可选参数: [param1, param2, ...]

命名可选参数的演示:

// 命名可选参数printInfo1(String name, int age, double height)   print('name=$name age=$age height=$height');
// 调用printInfo1函数printInfo1('why'); // name=why age=null height=nullprintInfo1('why', age: 18); // name=why age=18 height=nullprintInfo1('why', age: 18, height: 1.88); // name=why age=18 height=1.88printInfo1('why', height: 1.88); // name=why age=null height=1.88

位置可选参数的演示:

// 定义位置可选参数printInfo2(String name, [int age, double height])   print('name=$name age=$age height=$height');
// 调用printInfo2函数printInfo2('why'); // name=why age=null height=nullprintInfo2('why', 18); // name=why age=18 height=nullprintInfo2('why', 18, 1.88); // name=why age=18 height=1.88

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

// 命名可选参数的必须printInfo3(String name, int age, double height, @required String address)   print('name=$name age=$age height=$height address=$address');

4.2. 参数默认值

参数可以有默认值, 在不传入的情况下, 使用默认值

  • 注意, 只有可选参数才可以有默认值, 必须参数不能有默认值

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

Dart中的main函数就是一个接受可选的列表参数作为参数的, 所以在使用main函数时, 我们可以传入参数, 也可以不传入

以上是关于dart基础语法的主要内容,如果未能解决你的问题,请参考以下文章

Dart语法学习-基础 流程控制异常类

Flutter介绍和dart基础语法

Dart语法篇之基础语法

dart基础语法

dart基础语法

dart基础语法