做传销网站违法的吗百度seo引流
一、基本数据类型
- 数字类型
num
(int
,double
) - 字符串类型(
String
) - 布尔类型(
bool
) - 记录类型records(
(value1, value2)
) - 列表(
list
也成为数组) - 集合(
set
) - map类型(
map
) - runes类型(Runes 是一个表示 UTF - 32 字符序列的类型)
- 符号类型(
symbol
) - null类型(
null
) - dynamic 类型
1.recods记录类型
记录是一种匿名的、不可变的数据结构,它可以包含多个不同类型的值。这些值被称为记录的字段,每个字段可以有一个可选的名称。
示例
// 创建一个包含两个值的记录var point = (10, 20);// 访问记录中的值,使用索引从 0 开始print(point.$1); // 输出: 10print(point.$2); // 输出: 20// 创建一个包含命名字段的记录var person = (name: 'John', age: 30);// 访问记录中的值,使用字段名print(person.name); // 输出: Johnprint(person.age); // 输出: 30var record = ('first', a: 2, b: true, 'last', ['a', 'b']);print(record.$1); //firstprint(record.a); //2print(record.b); //trueprint(record.$2); //lastprint(record.$3[0]); //a
2.dynamic 类型
dynamic
类型可以用来声明变量、函数参数、返回值等,使用 dynamic 声明的变量可以在运行时持有任意类型的值,并且 Dart 编译器不会对其进行类型检查。也就是说,你可以给 dynamic 类型的变量赋予不同类型的值,调用该变量上任意的方法或访问属性,编译器不会报错,只有在运行时才会根据实际情况进行处理。
示例代码
- 变量声明
void main() {dynamic myVariable;myVariable = 10; // 可以赋值为整数print(myVariable); myVariable = 'Hello'; // 也可以赋值为字符串print(myVariable); myVariable = [1, 2, 3]; // 还可以赋值为列表print(myVariable);
}
- 函数参数和返回值
dynamic add(dynamic a, dynamic b) {return a + b;
}void main() {var result1 = add(1, 2); // 传入整数print(result1); var result2 = add('Hello', ' World'); // 传入字符串print(result2);
}
3.类型注释
类型注释指的是在变量、函数参数或返回值处显式指定的类型信息,帮助静态分析和提高代码可读性。
语法:在变
var uniqueNames = {'Seth', 'Kathy', 'Lars'}; //编译器可以自动类型推导为Strngvar uniqueNames = <String>{'Seth', 'Kathy', 'Lars'}; //类型注释,明确指定类型为Stringvar nameAgeMap = <String, int>{'Seth': 25,'Kathy': 30,'Lars': 35};// 明确指定映射的键为 String 类型,值为 int 类型
4.泛型
泛型允许你创建可重用的组件,这些组件可以处理多种数据类型而不仅仅是单一类型。通过在类、方法或函数的定义中使用类型参数,你可以在使用这些组件时指定具体的类型。
- 泛型类
class Box<T> {T value;Box(this.value);T getValue() {return value;}
}void main() {// 创建一个存储整数的 Box 实例Box<int> intBox = Box<int>(10);print(intBox.getValue()); // 输出: 10// 创建一个存储字符串的 Box 实例Box<String> stringBox = Box<String>("Hello");print(stringBox.getValue()); // 输出: Hello
}
- 泛型接口
T add<T>(T a, T b) {if (T == String) {return ((a as String) + (b as String)) as T; //as类型,转换为Strinfg} else if (T == int || T == double) {return ((a as num) + (b as num)) as T;}throw ArgumentError('Unsupported type for addition');
}void main() {dynamic result1 = add<int>(1, 2);print(result1);result1 = add<double>(1.5, 2.5);print(result1);result1 = add<String>('Hello', ' World');print(result1);}