teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

補足

2020/02/15 22:23

投稿

popobot
popobot

スコア6588

answer CHANGED
@@ -53,9 +53,10 @@
53
53
 
54
54
  ----
55
55
 
56
- 余談ですが、4のような`a..b().c()`を使いたいケースを考えてみました...
56
+ おまけですが、4のような`a..b().c()`を使いたいケースを考えてみました...
57
57
 
58
58
  ```
59
59
  var _list = <List<String>>[['one', 'two', 'three'],['four', 'five', 'six']];
60
60
  print(_list..first.shuffle());
61
+ print((_list..shuffle()..first.shuffle()).first.first);
61
62
  ```

2

余談を追加

2020/02/15 22:22

投稿

popobot
popobot

スコア6588

answer CHANGED
@@ -49,4 +49,13 @@
49
49
 
50
50
  > It helps to think of ".." as not really an operator, but more like a scoping construct (like parentheses). It creates a new scope from the ".." to either the next "..", or the first other scope delimiter (";", ")", "}" or similar).
51
51
 
52
- > Basically, a..b().c() is the same as (t){t.b().c(); return t;}(a)
52
+ > Basically, a..b().c() is the same as (t){t.b().c(); return t;}(a)
53
+
54
+ ----
55
+
56
+ 余談ですが、4のような`a..b().c()`を使いたいケースを考えてみました...
57
+
58
+ ```
59
+ var _list = <List<String>>[['one', 'two', 'three'],['four', 'five', 'six']];
60
+ print(_list..first.shuffle());
61
+ ```

1

補足

2020/02/15 22:19

投稿

popobot
popobot

スコア6588

answer CHANGED
@@ -1,7 +1,7 @@
1
- `3`は単純に`shuffle()`の戻り値が`void`のため、エラーになります。
1
+ 3`_list.shuffle().first`は単純に`shuffle()`の戻り値が`void`のため、エラーになります。
2
2
 
3
- `4`は`shuffle().first`がカスケードの範囲として認識されます。なので、`shuffle()`の戻り値`void`に`first`しており、エラーになります。
3
+ 4`_list..shuffle().first`は`shuffle().first`がカスケードの範囲として認識されます。なので、`shuffle()`の戻り値`void`に`first`しており、エラーになります。
4
- 一方、`2`では`shuffle()`のみがカスケードの範囲として認識されるので、`first`は`_list`に対して実行されます。
4
+ 一方、2`(_list..shuffle()).first`では`shuffle()`のみがカスケードの範囲として認識されるので、`first`は`_list`に対して実行されます。
5
5
 
6
6
  ----
7
7
 
@@ -18,7 +18,7 @@
18
18
  }(_list);
19
19
  ```
20
20
 
21
- `2`の`print((_list..shuffle()).first);`は以下のように置き換えられる
21
+ 2の`print((_list..shuffle()).first);`は以下のように置き換えられる
22
22
  ```
23
23
  print(
24
24
  (arg){
@@ -31,7 +31,7 @@
31
31
  );
32
32
  ```
33
33
 
34
- `4`の`print(_list..shuffle().first);`は以下のように置き換えられる
34
+ 4の`print(_list..shuffle().first);`は以下のように置き換えられる
35
35
  ```
36
36
  print(
37
37
  (arg){