void main(List<String> arguments) {
print(NullSafe().setValue(1));
NullSafe().printName();
// 同时给多个变量初始化并赋值,第一个变量为null
var name, age = 28;
print('name: $name, age: $age');

// 数组拆包
var list = [
9,
if (name == null) ...[1, 2, 3]
];
print(list);
// 和Python类似的数组生成式
var array = [
for (int i in [1, 2, 3, 4])
if (i % 2 != 0) i
];
print(array);
}

class NullSafe<T> {
// late 延迟初始化
late T value;
String? name;

T setValue(T newValue) {
value = newValue;
return value;
}

void printName() {
// 避空运算符:为空赋值
name ??= 'null safe';
// 条件属性访问:为空返回null
print(name?.length);
// 为空报错
print(name!.length);
}
}