Skip to content

Commit ccf00b6

Browse files
authored
Merge pull request #2684 from benluo/zh-cn/overviews/scala3-book/taste-contextual-abstractions
add code tabs in _zh-cn/overviews/scala3-book/taste-contextual-abstra…
2 parents 6b6c57f + 4cdc803 commit ccf00b6

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

_zh-cn/overviews/scala3-book/taste-contextual-abstractions.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,16 @@ TODO: Now that this is a separate section, it needs a little more content.
2424

2525
例如,考虑一个程序,该程序按两个条件对地址列表进行排序:城市名称,然后是街道名称。
2626

27+
{% tabs contextual_1 %}
28+
{% tab 'Scala 2 and 3' for=contextual_1 %}
29+
2730
```scala
2831
val addresses: List[Address] = ...
2932

3033
addresses.sortBy(address => (address.city, address.street))
3134
```
35+
{% endtab %}
36+
{% endtabs %}
3237

3338
`sortBy` 方法调用一个函数,该函数为每个地址返回值,这个值会用来与其他地址比较。
3439
在本例中,我们传递一个函数,该函数返回一对,该对包含城市名称和街道名称。
@@ -44,9 +49,21 @@ addresses.sortBy(address => (address.city, address.street))
4449

4550
但是,也可以显式传递它:
4651

52+
{% tabs contextual_2 class=tabs-scala-version %}
53+
{% tab 'Scala 2' for=contextual_2 %}
54+
55+
```scala
56+
addresses.sortBy(address => (address.city, address.street))(Ordering.Tuple2(Ordering.String, Ordering.String))
57+
```
58+
59+
{% endtab %}
60+
{% tab 'Scala 3' for=contextual_2 %}
61+
4762
```scala
4863
addresses.sortBy(address => (address.city, address.street))(using Ordering.Tuple2(Ordering.String, Ordering.String))
4964
```
65+
{% endtab %}
66+
{% endtabs %}
5067

5168
在本例中,`Ordering.Tuple2(Ordering.String, Ordering.String)` 实例正是编译器以其他方式推断的实例。
5269
换句话说,这两个示例生成相同的程序。

0 commit comments

Comments
 (0)