Definição de variável
Declare variáveis de duas maneiras, var ou declaração de palavra-chave do tipo especificado:
var str = "test";
String str2 = "string2";
Definição de constante:
use final e const para definir a
diferença entre final e const: final pode começar sem atribuição, pode ser atribuído apenas uma vez, final não apenas possui as características de constante de tempo de compilação const, o mais importante é que é uma constante de tempo de execução e final é uma inicialização lenta Ou seja, é inicializado antes do primeiro uso em tempo de execução.
Tipo de dados
Tipo de string
** Definição: ** aspas simples, aspas duplas, aspas triplas podem definir string
var str1 = 'string';
var str2 = "string2";
String str3 = 'string3';
String str4 = "string 4";
String str5 = '''string 5
string6
string7
''';
Costura:
print("$str1 $str2");
print(str1 + " " + str2);
Tipo numérico
int deve ser um número inteiro, double pode ser um número inteiro ou ponto flutuante
int ival = 1;
double dval = 2.3;
bool bval = true;
Matriz / coleção
definição de lista
//第一种定义list的方式
var l1 = ['aa','bb','cc'];
print(l1);
print(l1.length);
print(l1[1]);
//第二种定义list的方式
var l2 = new List();
l2.add('张三');
l2.add('李四');
l2.add('王五');
print(l2);
print(l2[2]);
//定义指定类型list
var l3 = new List<String>();
l3.add('指定类型');
Resultado de saída:
[Running] dart "d:\work\workspace\dart\dartdemo\index.dart"
[aa, bb, cc]
3
bb
[张三, 李四, 王五]
王五
[Done] exited with code=0 in 0.657 seconds
definição de mapa
// 第一种定义Maps的方式
var person = {
"name":"zhangsan",
"age": 20,
"work":["程序员","外卖"]
};
print(person);
print(person["name"]);
print(person["work"]);
//第二种定义Maps的方式
var p = new Map();
p["name"] = "lisi";
p["age"] = 30;
p["work"] = ["student", "服务员"];
print(p);
Saída:
{name: zhangsan, age: 20, work: [程序员, 外卖]}
zhangsan
[程序员, 外卖]
{name: lisi, age: 30, work: [student, 服务员]}
é o tipo de julgamento
var str = "test";
if(str is String){
print('string 类型');
}else{
print("不是string 类型");
}
Operador
Aqui, apenas escreva operadores especiais; outros idiomas, como java, não são arredondados repetidamente
:
int a= 13;
int b = 5;
print(a~/b); //取整
?? = operador de atribuição
// b??=23;表示如果b为空的话, 23赋值给b
int a = 10;
a ??= 20;
print(a);
int b;
b ??= 23;
print(b);
Resultado de saída:
[Running] dart "d:\work\workspace\dart\dartdemo\demo01.dart"
10
23
operador
var a;
var b = a ?? 10;
print(b);
var c = 2;
var d = c ?? 30;
print(d);
Resultado de saída:
[Running] dart "d:\work\workspace\dart\dartdemo\demo01.dart"
10
2
Operador trinocular
//三目运算符
bool flag = true;
String str = flag? 'ture' : 'false';
Função
Função com parâmetros opcionais
String getUserInfo(String username, [int age]){
if(age != null){
return "姓名:$username-----年龄:$age";
}
return "姓名:$username--- 年龄保密";
}
print(getUserInfo("张三",30));
print(getUserInfo("李四"));
Resultado de saída:
[Running] dart "d:\work\workspace\dart\dartdemo\demo01.dart"
姓名:张三-----年龄:30
姓名:李四--- 年龄保密
Parâmetro padrão
String getUserInfo(String username, [int age, String sex = '男']){
if(age != null){
return "姓名:$username---性别:$sex--年龄:$age";
}
return "姓名:$username----性别:$sex---- 年龄保密";
}
print(getUserInfo("张三",30));
print(getUserInfo("李四"));
Parâmetro nomeado
String getUserInfo(String username, {int age, String sex = '男'}){
if(age != null){
return "姓名:$username---性别:$sex--年龄:$age";
}
return "姓名:$username----性别:$sex---- 年龄保密";
}
print(getUserInfo("张三",age:30));
print(getUserInfo("李四"));
Encerramento
'Variáveis globais residentes na memória poluirão a global, variáveis locais serão recicladas pelo mecanismo de coleta de lixo, não poluirão a global.
Se você deseja implementar a memória residente e não poluir o global, este assunto pode usar encerramentos
Class
Propriedade privada, use private em Java, apenas sublinhe a variável diretamente no dardo
class Person{
String _name; //私有属性,对应java中的private
int age; //公有属性,对应java中的public
}
Inicialize variáveis de instância antes que o construtor seja executado
class Rect{
int width;
int height;
Rect():width=2,height=10{
}
… Operação em cascata (concatenação)
class Person{
String name;
int age;
Person(this.name,this.age);
printInfo(){
print("name=${this.name}-----age = ${this.age}");
}
}
main(List<String> args) {
var p1 = new Person("张三",20);
p1.printInfo();
p1.name="李四";
p1.age=30;
p1.printInfo();
p1..name="王五"
..age=50
..printInfo();
}
Resultado de saída:
[Running] dart "d:\work\workspace\dart\dartdemo\demo01.dart"
name=张三-----age = 20
name=李四-----age = 30
name=王五-----age = 50
A função mixins
implementa várias funções de herança semelhantes à classe, mas não herdadas
class A{
String info = "this is A";
void printA(){
print("A");
}
}
class B{
void printB(){
print("B");
}
}
class C with A,B{
}
void main(List<String> args) {
var c = new C();
c.printA();
c.printB();
print(c.info);
}
Resultado de saída:
[Running] dart "d:\work\workspace\dart\dartdemo\demo01.dart"
A
B
this is A
Condições de uso para mixins:
- Como um objeto de integração inteligente de classe de minxins, ele não pode herdar outras classes, como a Classe A no código acima não pode integrar uma classe personalizada
- Classes que são mixins não podem ter construtores
- Uma classe pode mixins múltiplos mixins
- Mixins não são heranças ou interfaces, e os ouvidos são um novo recurso do dardo