Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Destructuring #113

Closed
4 of 5 tasks
azu opened this issue Jul 30, 2016 · 6 comments · Fixed by #593
Closed
4 of 5 tasks

Destructuring #113

azu opened this issue Jul 30, 2016 · 6 comments · Fixed by #593

Comments

@azu
Copy link
Collaborator

azu commented Jul 30, 2016

#17 基本文法

Destructuringについて扱う。
Destructuringは他と組み合わせ使う傾向があるけど、一見するとよくわからないものなので一つの文法として紹介した方が良さそう。

  • 細かいユースケースについては、他の文法の紹介時に含めるような形にする
  • Promise.all
  • module (これ実は構文として違うんだろなー)
  • オプションオブジェクト (これは後半のユースケースでも出てくる?)

など色々あるが、基本的な配列とオブジェクトの2種類を紹介する形にする。

追記: 2018-12-16

  • 基本的な形は演算子=で紹介する
  • 配列、オブジェクト、関数 においてそれぞれ軽くDestructuringについて扱う

という程度に留めておく。

目的

分割代入(Destructuring assignment)という構文の名前を知ること。
初めてみたときこの構文は混乱するので、この名前を知っていればあとはMDNなど色々なリソースでより詳細な構文を知ることができるという点を目的としている。 分割代入(Destructuring assignment)をすべて解説しないで、最低限(オブジェクト、配列、関数)だけに絞ってははなす。

オブジェクトについては、モジュールでも同じような構文となるため目に慣れておいて欲しいという点も含めて何箇所かにだしている。

Tasks

@azu
Copy link
Collaborator Author

azu commented Jul 30, 2016

Destructuringは異様に複雑なことも書けるので、ほどほどというものを上手く言葉にまとめたい感じ。

以前、仕様の議論でも以下のはOKなの?とか色々話がでていたので、特殊な使い方より普通の人が普通に使うパターンについて解説したい

var obj = {};
let { } = obj;

azu added a commit that referenced this issue Jul 31, 2016
- 代入演算子と二項演算子について
- 分割代入(Destructuring assignment)

refs #32 #113
azu added a commit that referenced this issue Jul 31, 2016
- 代入演算子と二項演算子について
- 分割代入(Destructuring assignment)

refs #32 #113
@azu
Copy link
Collaborator Author

azu commented Aug 23, 2016

他の言語では多重代入と言われてたりする。
やっぱりルールが複雑化しやすいのは同じっぽい

@yumetodo
Copy link
Contributor

C++だとC++17に提案されている
P0341R0: Leveraging parameter packs outside of templates
とか
C++17入りが決定した
P0217R2: Wording for structured bindings
が該当しますかねぇ

@azu
Copy link
Collaborator Author

azu commented Sep 7, 2016

@azu
Copy link
Collaborator Author

azu commented Dec 12, 2018

  • 演算子=で紹介
  • 配列で const [a, b] = [1, 2] を紹介
  • オブジェクトで const {a, b} = { a: 1, b: 2 } を紹介
  • 関数の引数での分割 Object.entries({}).map(([key, value]) => {})
    • 適当な場所がない気がする
    • Edit: 章ごとのページ量を可視化する #554 (comment)
    • operatorが今"関数"より後にあるけど、"演算子"の部分はもっと前に移動できそう
    • そうしたら => 演算子 -> 関数の宣言 -> 配列 -> オブジェクト とそれぞれDestructuringを扱えるようになる。
    • 演算子を前に持ってくる場合は、少し分量が多いので、もう少し薄くしたい気がする

@azu
Copy link
Collaborator Author

azu commented Dec 16, 2018

📝 = と 関数のDestructuringは構文的には異なる定義

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
2 participants