Skip to content

Commit

Permalink
doc: update docs/dart.md
Browse files Browse the repository at this point in the history
  • Loading branch information
jaywcjlove committed Jun 25, 2024
1 parent eb01adb commit 4b22796
Showing 1 changed file with 74 additions and 1 deletion.
75 changes: 74 additions & 1 deletion docs/dart.md
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,79 @@ print(3 >= 3); // 打印: true - 大于或等于
print(2 <= 3); // 打印: true - 小于或等于
```

### 运算符优先级示例

```dart
// 括号可以提高可读性。
if ((n % i == 0) && (d % i == 0)) ...
// 虽然难以阅读,但等效。
if (n % i == 0 && d % i == 0) ...
```

### 位运算符和移位运算符

操作符 | 含义
:-|-
`&` | 与(AND)
`\|` | 或(OR)
`^` | 异或(XOR)
`~expr` | 一元位补码<br>_(0 变为 1;1 变为 0)_
`<<` | 左移
`>>` | 右移
`>>>` | 无符号右移
<!--rehype:className=left-align-->

----

```dart
final value = 0x22;
final bitmask = 0x0f;
// 与(AND)
assert((value & bitmask) == 0x02);
// 非与(AND NOT)
assert((value & ~bitmask) == 0x20);
// 或(OR)
assert((value | bitmask) == 0x2f);
// 异或(XOR)
assert((value ^ bitmask) == 0x2d);
assert((value << 4) == 0x220); // 左移
assert((value >> 4) == 0x02); // 右移
```

### 级联表示法

级联 (.., ?..) 允许您对同一对象进行一系列操作。除了访问实例成员之外,您还可以调用同一对象的实例方法。这通常可以节省您创建临时变量的步骤,并允许您编写更流畅的代码。考虑以下代码:

```dart
var paint = Paint()
..color = Colors.black
..strokeCap = StrokeCap.round
..strokeWidth = 5.0;
```

示例相当于以下代码:

```dart
var paint = Paint();
paint.color = Colors.black;
paint.strokeCap = StrokeCap.round;
paint.strokeWidth = 5.0;
```

`?...`开头可确保不会对该空对象进行任何级联操作。

```dart
querySelector('#confirm') // 获取一个对象
?..text = 'Confirm' // 使用它的成员
..classes.add('important')
..onClick.listen((e) => {
window.alert('Confirmed!')
})
..scrollIntoView();
```

控制流:条件
------

Expand All @@ -206,7 +279,7 @@ if(age < 18){
```dart
enum Pet {dog, cat}
Pet myPet = Pet.dog;
switch(myPet){
switch(myPet) {
case Pet.dog:
print('My Pet is Dog.');
break;
Expand Down

0 comments on commit 4b22796

Please sign in to comment.