От вашего вопроса, я думаю, вы понимаете / согласны с способом объявления записи значение :
let bob = {first="bob"; last="smith"} // define a value
ОК, пошли!
Слевачасть в привязке let (xxx
in let xxx = yyy
) на самом деле является шаблоном , а не оператором или присваиванием.Вы можете приблизительно представить шаблон как регулярное выражение, в котором вы можете определить некоторые заполнители в шаблоне.
В общем смысле шаблон для значения должен быть в идентичной форме с объявлением значения (yyy
в примере).Давайте напишем это, и вы поймете, почему синтаксис имеет смысл:
let {first=f; last=l} = {first="bob"; last="smith"}
Здесь f
и l
являются заполнителями, и после этой привязки значение f
будет "bob"
, значениеиз l
будет "smith"
.
Я мог бы понять: {f=first; l=last}
, где он назначит первое поле для f и последнее поле для l.
Шаблоны могут быть вложенными, поэтому ваша интерпретация будет нарушена, если вы продолжите поиск по шаблонам на f
и / или l
.Например:
{(Something ff)=first; (Something ll)=last}
Короче говоря, вам следует подумать «присваивать» здесь с точки зрения заполнения значений заполнителями, а не операции присваивания (=
) на традиционных языках.