title: Destructuring/list assignment with the `has` declarator
body: <p>[I ran into the issues that prompted this question and my <a href="https://stackoverflow.com/questions/69147382/destucturing-assignment-in-object-creation">previous question</a> at the same time, but decided the two questions deserve to be separate.]</p>
  <p>The docs describe using <a href="https://docs.raku.org/language/variables#index-entry-destructuring_assignment" rel="noreferrer">destructuring assignment</a> with <code>my</code> and <code>our</code> variables, but don't mention whether it can be used with <code>has</code> variables.  But Raku is consistent enough that I decided to try, and it <em>appears</em> to work:</p>
  <pre><code>class C { has $.a; has $.b }
  class D { has ($.a, $.b) }
  C.new: :a&lt;foo&gt;;  # OUTPUT: «C.new(a =&gt; &quot;foo&quot;, b =&gt; Any)»
  D.new: :a&lt;foo&gt;;  # OUTPUT: «D.new(a =&gt; &quot;foo&quot;, b =&gt; Any)»
  </code></pre>
  <p>However, this form seems to break attribute defaults:</p>
  <pre><code>class C { has $.a; has $.b = 42 }
  class D { has ($.a, $.b = 42) }
  C.new: :a&lt;foo&gt;;  # OUTPUT: «C.new(a =&gt; &quot;foo&quot;, b =&gt; 42)»
  D.new: :a&lt;foo&gt;;  # OUTPUT: «C.new(a =&gt; &quot;foo&quot;, b =&gt; Any)»
  </code></pre>
  <p>Additionally, flipping the position of the default provides an error message that might provide <em>some</em> insight into what is going on (though not enough for me to understand if the above behavior is correct).</p>
  <pre><code>class D { has ($.a = 42, $.b) }
  # OUTPUT:
  ===SORRY!=== Error while compiling:
  Cannot put required parameter $.b after optional parameters
  </code></pre>
  <p>So, a few questions: is destructuring assignment even <em>supposed</em> to work with <code>has</code>?  If so, is the behavior with default values correct/is there a way to assign default values when using destucturing assignment?</p>
  <p>(I really hope that destructuring assignment <em>is</em> supported with <code>has</code> and can be made to work with default values; even though it might seem like a niche feature for someone using classes for true OO, it's <em>very</em> handy for someone writing more functional code who wants to use a class as a slightly-more-typesafe Hash with fixed keys.  Being able to write things like <code>class User { has (Str $.first-name, Str $.last-name, Int $.age) }</code> is <strong>very</strong> helpful for that sort of code)</p>