我对 Dart (Flutter)中的括号感到困惑。 哪个括号“(),{},[]”用于什么?
答案 0 :(得分:3)
()
可以对表达式进行分组:
var x = (1 + 2) * 3;
或可以指定函数的参数列表:
var getAnswer = () => 42;
int square(int x) => x * x;
或可以指定function calls:
var answer = getAnswer();
var squared = square(4);
[]
本身创建List
literals:
var list = [1, 2, 3];
var emptyList = []; // Creates a List<dynamic>.
或在对象上使用时,调用operator []
,该方法通常访问集合的元素:
var element = list[index];
var value = map[key];
或在参数列表中指定optional positional parameters:
int function(int x, [int y, int z]) {
return x + y ?? 0 + z ?? 0;
}
function(1, 2);
或in dartdoc comments, creates linked references到其他符号:
/// Creates a [Bar] from a [Foo].
Bar fooToBar(Foo foo) {
// ...
}
{}
可以创建代码块,将行分组在一起并限制变量范围。这包括(但不限于)函数体,类声明,if
-else
块,try
-catch
块,for
块,{{ 1}}个块,while
个块等:
switch
或本身可以创建Set
或Map
literals:
class Class {
int member;
}
void doNothing() {}
void function(bool condition) {
{
int x = 'Hello world!';
print(x);
}
if (condition) {
int x = 42; // No name collision due to separate scopes.
print(x);
}
}
或在参数列表中指定optional named parameters:
var set = {1, 2, 3};
var emptySet = <int>{};
var map = {'one': 1, 'two': 2, 'three': 3};
var emptyMap = {}; // Creates a Map<dynamic, dynamic>
或创建枚举:
int function(int x, {int y, int z}) {
return x + y ?? 0 + z ?? 0;
}
function(1, y: 2);
或enum SomeEnumeration {
foo,
bar,
baz,
}
中的
用于消除插值表达式的歧义:
String
var foo = 'foo';
var foobar = '${foo}bar';
var s = '${function(1, 2)}';
在函数或类声明中成对使用时会创建generics:
<>
或使用泛型时指定显式类型:
class GenericClass<T> {
T member;
}
T function<T>(T x) {
// ...
}