https://wiki.hsoub.com/index.php?title=Kotlin/multi_declarations&feed=atom&action=history
Kotlin/multi declarations - تاريخ المراجعة
2024-03-29T08:10:03Z
تاريخ التعديل لهذه الصفحة في الويكي
MediaWiki 1.35.0
https://wiki.hsoub.com/index.php?title=Kotlin/multi_declarations&diff=15999&oldid=prev
عبد اللطيف ايمش: استبدال النص - 'Kotlin Functions' ب'Kotlin Function'
2018-08-30T11:36:28Z
<p>استبدال النص - 'Kotlin Functions' ب'Kotlin Function'</p>
<table class="diff diff-contentalign-right diff-editfont-monospace" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="ar">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">→ مراجعة أقدم</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">مراجعة 11:36، 30 أغسطس 2018</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l72" >سطر 72:</td>
<td colspan="2" class="diff-lineno">سطر 72:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[تصنيف:Kotlin Maps]]</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[تصنيف:Kotlin Maps]]</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[تصنيف:Kotlin Lambdas]]</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[تصنيف:Kotlin Lambdas]]</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>[[تصنيف:Kotlin <del class="diffchange diffchange-inline">Functions</del>]]</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>[[تصنيف:Kotlin <ins class="diffchange diffchange-inline">Function</ins>]]</div></td></tr>
</table>
عبد اللطيف ايمش
https://wiki.hsoub.com/index.php?title=Kotlin/multi_declarations&diff=12095&oldid=prev
Nourtam: تعديل مصطلح متحول
2018-07-04T17:10:23Z
<p>تعديل مصطلح متحول</p>
<table class="diff diff-contentalign-right diff-editfont-monospace" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="ar">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">→ مراجعة أقدم</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">مراجعة 17:10، 4 يوليو 2018</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1" >سطر 1:</td>
<td colspan="2" class="diff-lineno">سطر 1:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><noinclude>{{DISPLAYTITLE:التصريحات بالتفكيك (Destructuring Declarations) في لغة Kotlin}}</noinclude></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><noinclude>{{DISPLAYTITLE:التصريحات بالتفكيك (Destructuring Declarations) في لغة Kotlin}}</noinclude></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== التصريح بالتفكيك ==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== التصريح بالتفكيك ==</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>قد تحتاج في بعض الأحيان لتفكيك الكائن (object) إلى عددٍ من <del class="diffchange diffchange-inline">المتحولات، </del>مثل:<syntaxhighlight lang="kotlin"></div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>قد تحتاج في بعض الأحيان لتفكيك الكائن (object) إلى عددٍ من <ins class="diffchange diffchange-inline">المتغيِّرات، </ins>مثل:<syntaxhighlight lang="kotlin"></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>val (name, age) = person </div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>val (name, age) = person </div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight>تٌسمَّى الصيغة السابقة بالتصريح بالتفكيك والذي يُنشِئ أكثر من <del class="diffchange diffchange-inline">متحولٍ </del>بنفس الوقت (وهما <del class="diffchange diffchange-inline">المتحولان </del><code>name</code> و <code>age</code>) حيث يُسمح باستخدامهما بشكلٍ مستقلٍ تمامًا كما في الشيفرة الآتية:<syntaxhighlight lang="kotlin"></div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight>تٌسمَّى الصيغة السابقة بالتصريح بالتفكيك والذي يُنشِئ أكثر من <ins class="diffchange diffchange-inline">متغيِّر </ins>بنفس الوقت (وهما <ins class="diffchange diffchange-inline">المتغيِّران</ins><code>name</code> و <code>age</code>) حيث يُسمح باستخدامهما بشكلٍ مستقلٍ تمامًا كما في الشيفرة الآتية:<syntaxhighlight lang="kotlin"></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>println(name)</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>println(name)</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>println(age)</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>println(age)</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l13" >سطر 13:</td>
<td colspan="2" class="diff-lineno">سطر 13:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>كما ويُستفاد من التصريح بالتفكيك في حلقة <code>for</code> بالشكل:<syntaxhighlight lang="kotlin"></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>كما ويُستفاد من التصريح بالتفكيك في حلقة <code>for</code> بالشكل:<syntaxhighlight lang="kotlin"></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>for ((a, b) in collection) { ... }</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>for ((a, b) in collection) { ... }</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight>حيث تحصل <del class="diffchange diffchange-inline">المتحولات </del><code>a</code> و <code>b</code> على القيم من استدعاء الدالتين <code>component1()</code> و <code>component2()</code> في عناصر المجموعة (collection).</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight>حيث تحصل <ins class="diffchange diffchange-inline">المتغيِّرات</ins><code>a</code> و <code>b</code> على القيم من استدعاء الدالتين <code>component1()</code> و <code>component2()</code> في عناصر المجموعة (collection).</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== تطبيقٌ عمليٌّ: إعادة قيمتين من الدالة ==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== تطبيقٌ عمليٌّ: إعادة قيمتين من الدالة ==</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l44" >سطر 44:</td>
<td colspan="2" class="diff-lineno">سطر 44:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight>مما يجعل من السهل استخدام التصريحات بالتفكيك في حلقات <code>for</code> بالاعتماد على maps (وكذلك كائنات مجموعات أصناف البيانات [collections of data class instances] وما يماثلها).</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight>مما يجعل من السهل استخدام التصريحات بالتفكيك في حلقات <code>for</code> بالاعتماد على maps (وكذلك كائنات مجموعات أصناف البيانات [collections of data class instances] وما يماثلها).</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>== استخدام الشرطة السفليّة (_) <del class="diffchange diffchange-inline">للمتحولات </del>غير المُستخدَمة (بدءًا من الإصدار 1.1) ==</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>== استخدام الشرطة السفليّة (_) <ins class="diffchange diffchange-inline">للمتغيرات </ins>غير المُستخدَمة (بدءًا من الإصدار 1.1) ==</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>إن لم يكن هناك حاجةٌ <del class="diffchange diffchange-inline">للمتحوّل </del>في التصريح بالتفكيك فيمكن الاستغناءُ عن اسمه بالشرطة السفليّة مثل:<syntaxhighlight lang="kotlin"></div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>إن لم يكن هناك حاجةٌ <ins class="diffchange diffchange-inline">للمتغيِّر </ins>في التصريح بالتفكيك فيمكن الاستغناءُ عن اسمه بالشرطة السفليّة مثل:<syntaxhighlight lang="kotlin"></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>val (_, status) = getResult()</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>val (_, status) = getResult()</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight>وبهذه الطريقة لن تُستدعَى دالة الجزء (component function) الموافقةِ له.</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight>وبهذه الطريقة لن تُستدعَى دالة الجزء (component function) الموافقةِ له.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== التفكيك في lambdas (بدءًا من الإصدار 1.1) ==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== التفكيك في lambdas (بدءًا من الإصدار 1.1) ==</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>تُستخدَم صيغةُ التصريحات بالتفكيك في <del class="diffchange diffchange-inline">متحولات </del>lambda أيضًا، وإذا كان <del class="diffchange diffchange-inline">متحول </del>lambda من النوع <code>Pair</code> (أو من النوع <code>Map.Entry</code> أو أي نوعٍ آخر يحتوي على دالة جزءٍ [component function] مناسبةٍ) فيُمكن حينئذٍ استخدام أكثر من <del class="diffchange diffchange-inline">متحولٍ </del>(تُحاط <del class="diffchange diffchange-inline">المتحولات </del>بالأقواس <code>()</code>)، كما في الشيفرة الآتية:<syntaxhighlight lang="kotlin"></div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>تُستخدَم صيغةُ التصريحات بالتفكيك في <ins class="diffchange diffchange-inline">معاملات </ins>lambda أيضًا، وإذا كان <ins class="diffchange diffchange-inline">معامل </ins>lambda من النوع <code>Pair</code> (أو من النوع <code>Map.Entry</code> أو أي نوعٍ آخر يحتوي على دالة جزءٍ [component function] مناسبةٍ) فيُمكن حينئذٍ استخدام أكثر من <ins class="diffchange diffchange-inline">معامل </ins>(تُحاط <ins class="diffchange diffchange-inline">المعاملات </ins>بالأقواس <code>()</code>)، كما في الشيفرة الآتية:<syntaxhighlight lang="kotlin"></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>map.mapValues { entry -> "${entry.value}!" }</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>map.mapValues { entry -> "${entry.value}!" }</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>map.mapValues { (key, value) -> "$value!" }</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>map.mapValues { (key, value) -> "$value!" }</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight>ويتَّضِح الفرق بين التصريح عن <del class="diffchange diffchange-inline">متحوِّلين </del>والتصريح عنهما بالتفكيك، كما يلي:<syntaxhighlight lang="kotlin"></div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight>ويتَّضِح الفرق بين التصريح عن <ins class="diffchange diffchange-inline">معاملين </ins>والتصريح عنهما بالتفكيك، كما يلي:<syntaxhighlight lang="kotlin"></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>{ a -> ... } // <del class="diffchange diffchange-inline">متحول </del>واحد</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>{ a -> ... } // <ins class="diffchange diffchange-inline">معامل </ins>واحد</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>{ a, b -> ... } // <del class="diffchange diffchange-inline">متحولان</del></div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>{ a, b -> ... } // <ins class="diffchange diffchange-inline">معاملان</ins></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>{ (a, b) -> ... } // تصريح مفكك <del class="diffchange diffchange-inline">بمتحولين</del></div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>{ (a, b) -> ... } // تصريح مفكك <ins class="diffchange diffchange-inline">بمتغيرين</ins></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>{ (a, b), c -> ... } // تصريح مفكك <del class="diffchange diffchange-inline">بمتحولين ومتحول </del>ثالث مستقل</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>{ (a, b), c -> ... } // تصريح مفكك <ins class="diffchange diffchange-inline">بمتغيرين ومعامل </ins>ثالث مستقل</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight>فإن كان أحد أجزاء التصريح بالتفكيك غير مستخدمٍ يُستعاض عنه بالشرطة السفليّة دون الحاجة لتسميته، مثل:<syntaxhighlight lang="kotlin"></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight>فإن كان أحد أجزاء التصريح بالتفكيك غير مستخدمٍ يُستعاض عنه بالشرطة السفليّة دون الحاجة لتسميته، مثل:<syntaxhighlight lang="kotlin"></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>map.mapValues { (_, value) -> "$value!" }</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>map.mapValues { (_, value) -> "$value!" }</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight>كما ويمكن تحديد النوع الإجماليّ <del class="diffchange diffchange-inline">لمتحولات </del>التصريح بالتفكيك أو <del class="diffchange diffchange-inline">لمتحولٍ </del>واحدٍ منها بشكلٍ منفصلٍ كما في الشيفرة الآتية:<syntaxhighlight lang="kotlin"></div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight>كما ويمكن تحديد النوع الإجماليّ <ins class="diffchange diffchange-inline">لمعاملات </ins>التصريح بالتفكيك أو <ins class="diffchange diffchange-inline">لمعاملٍ </ins>واحدٍ منها بشكلٍ منفصلٍ كما في الشيفرة الآتية:<syntaxhighlight lang="kotlin"></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>map.mapValues { (_, value): Map.Entry<Int, String> -> "$value!" }</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>map.mapValues { (_, value): Map.Entry<Int, String> -> "$value!" }</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
</table>
Nourtam
https://wiki.hsoub.com/index.php?title=Kotlin/multi_declarations&diff=3462&oldid=prev
Nourtam في 03:45، 18 مارس 2018
2018-03-18T03:45:44Z
<p></p>
<table class="diff diff-contentalign-right diff-editfont-monospace" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="ar">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">→ مراجعة أقدم</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">مراجعة 03:45، 18 مارس 2018</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l30" >سطر 30:</td>
<td colspan="2" class="diff-lineno">سطر 30:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>'''ملاحظة:''' يمكن استخدام الصنف القياسي <code>Pair</code> لتعيد الدالة <code>function()</code> النوع <code>Pair<Int, Status></code>، ولكن من الأفضل تسميةُ البيانات بما يتناسب مع استخدامها.</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>'''ملاحظة:''' يمكن استخدام الصنف القياسي <code>Pair</code> لتعيد الدالة <code>function()</code> النوع <code>Pair<Int, Status></code>، ولكن من الأفضل تسميةُ البيانات بما يتناسب مع استخدامها.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>== تطبيقٌ عمليٌّ: التصريحات <del class="diffchange diffchange-inline">المُفكَّكة </del>و Maps ==</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>== تطبيقٌ عمليٌّ: التصريحات <ins class="diffchange diffchange-inline">بالتفكيك </ins>و Maps ==</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>إنّ الطريقة الأنسب للمرور بعناصر map هي كما في الشيفرة الآتية:<syntaxhighlight lang="kotlin"></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>إنّ الطريقة الأنسب للمرور بعناصر map هي كما في الشيفرة الآتية:<syntaxhighlight lang="kotlin"></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>for ((key, value) in map) {</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>for ((key, value) in map) {</div></td></tr>
</table>
Nourtam
https://wiki.hsoub.com/index.php?title=Kotlin/multi_declarations&diff=3461&oldid=prev
Nourtam: تعديل المصطلح الأساسي في كامل الصفحة
2018-03-18T03:44:05Z
<p>تعديل المصطلح الأساسي في كامل الصفحة</p>
<table class="diff diff-contentalign-right diff-editfont-monospace" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="ar">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">→ مراجعة أقدم</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">مراجعة 03:44، 18 مارس 2018</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1" >سطر 1:</td>
<td colspan="2" class="diff-lineno">سطر 1:</td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><noinclude>{{DISPLAYTITLE:<del class="diffchange diffchange-inline">تفكيك </del>التصريحات (Destructuring Declarations) في لغة Kotlin}}</noinclude></div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><noinclude>{{DISPLAYTITLE:التصريحات <ins class="diffchange diffchange-inline">بالتفكيك </ins>(Destructuring Declarations) في لغة Kotlin}}</noinclude></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>== التصريح <del class="diffchange diffchange-inline">المُفكّك </del>==</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>== التصريح <ins class="diffchange diffchange-inline">بالتفكيك </ins>==</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>قد تحتاج في بعض الأحيان لتفكيك الكائن (object) إلى عددٍ من المتحولات، مثل:<syntaxhighlight lang="kotlin"></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>قد تحتاج في بعض الأحيان لتفكيك الكائن (object) إلى عددٍ من المتحولات، مثل:<syntaxhighlight lang="kotlin"></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>val (name, age) = person </div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>val (name, age) = person </div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight>تٌسمَّى الصيغة السابقة بالتصريح <del class="diffchange diffchange-inline">المُفكَّك </del>والذي يُنشِئ أكثر من متحولٍ بنفس الوقت (وهما المتحولان <code>name</code> و <code>age</code>) حيث يُسمح باستخدامهما بشكلٍ مستقلٍ تمامًا كما في الشيفرة الآتية:<syntaxhighlight lang="kotlin"></div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight>تٌسمَّى الصيغة السابقة بالتصريح <ins class="diffchange diffchange-inline">بالتفكيك </ins>والذي يُنشِئ أكثر من متحولٍ بنفس الوقت (وهما المتحولان <code>name</code> و <code>age</code>) حيث يُسمح باستخدامهما بشكلٍ مستقلٍ تمامًا كما في الشيفرة الآتية:<syntaxhighlight lang="kotlin"></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>println(name)</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>println(name)</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>println(age)</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>println(age)</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight>إذ يُترجَم التصريح <del class="diffchange diffchange-inline">المُفكَّك </del>كما يلي:<syntaxhighlight lang="kotlin"></div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight>إذ يُترجَم التصريح <ins class="diffchange diffchange-inline">بالتفكيك </ins>كما يلي:<syntaxhighlight lang="kotlin"></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>val name = person.component1()</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>val name = person.component1()</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>val age = person.component2()</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>val age = person.component2()</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight>حيث تُعدُّ الدالتان <code>component1()</code> و <code>component2()</code> مثالًا عن الاصطلاحات الأساسيّة المُستخدَمة في لغة Kotlin (راجع المُعامِلات مثل <code>+</code> و <code>*</code> وحلقات <code>for</code> و... إلخ.)، ويُسمَح بوجود أيّ كائنٍ في الجانب الأيمن من التصريح <del class="diffchange diffchange-inline">المُفكَّك </del>طالما أمكن استدعاء العدد المطلوب من دوال الأجزاء (component functions) عبره (قد تكون بالأسماء <code>component3()</code> و <code>component4()</code> وهكذا) والتي يجب أن تُحدَّد بالكلمة المفتاحيّة <code>operator</code> للسماح باستخدامها في التصريح <del class="diffchange diffchange-inline">المُفكَّك</del>.</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight>حيث تُعدُّ الدالتان <code>component1()</code> و <code>component2()</code> مثالًا عن الاصطلاحات الأساسيّة المُستخدَمة في لغة Kotlin (راجع المُعامِلات مثل <code>+</code> و <code>*</code> وحلقات <code>for</code> و... إلخ.)، ويُسمَح بوجود أيّ كائنٍ في الجانب الأيمن من التصريح <ins class="diffchange diffchange-inline">بالتفكيك </ins>طالما أمكن استدعاء العدد المطلوب من دوال الأجزاء (component functions) عبره (قد تكون بالأسماء <code>component3()</code> و <code>component4()</code> وهكذا) والتي يجب أن تُحدَّد بالكلمة المفتاحيّة <code>operator</code> للسماح باستخدامها في <ins class="diffchange diffchange-inline">هذا </ins>التصريح.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>كما ويُستفاد من التصريح <del class="diffchange diffchange-inline">المُفكَّك </del>في حلقة <code>for</code> بالشكل:<syntaxhighlight lang="kotlin"></div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>كما ويُستفاد من التصريح <ins class="diffchange diffchange-inline">بالتفكيك </ins>في حلقة <code>for</code> بالشكل:<syntaxhighlight lang="kotlin"></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>for ((a, b) in collection) { ... }</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>for ((a, b) in collection) { ... }</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight>حيث تحصل المتحولات <code>a</code> و <code>b</code> على القيم من استدعاء الدالتين <code>component1()</code> و <code>component2()</code> في عناصر المجموعة (collection).</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight>حيث تحصل المتحولات <code>a</code> و <code>b</code> على القيم من استدعاء الدالتين <code>component1()</code> و <code>component2()</code> في عناصر المجموعة (collection).</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l26" >سطر 26:</td>
<td colspan="2" class="diff-lineno">سطر 26:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>// الآن.. استخدام الدالة</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>// الآن.. استخدام الدالة</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>val (result, status) = function(...)</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>val (result, status) = function(...)</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight>ويُسمَح باستخدام التصريح <del class="diffchange diffchange-inline">المُفكَّك </del>هنا لأنّ أصناف البيانات تعرِّف دوال الأجزاء <code>componentN()</code> تلقائيًا.</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight>ويُسمَح باستخدام التصريح <ins class="diffchange diffchange-inline">بالتفكيك </ins>هنا لأنّ أصناف البيانات تعرِّف دوال الأجزاء <code>componentN()</code> تلقائيًا.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>'''ملاحظة:''' يمكن استخدام الصنف القياسي <code>Pair</code> لتعيد الدالة <code>function()</code> النوع <code>Pair<Int, Status></code>، ولكن من الأفضل تسميةُ البيانات بما يتناسب مع استخدامها.</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>'''ملاحظة:''' يمكن استخدام الصنف القياسي <code>Pair</code> لتعيد الدالة <code>function()</code> النوع <code>Pair<Int, Status></code>، ولكن من الأفضل تسميةُ البيانات بما يتناسب مع استخدامها.</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l42" >سطر 42:</td>
<td colspan="2" class="diff-lineno">سطر 42:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>operator fun <K, V> Map.Entry<K, V>.component1() = getKey()</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>operator fun <K, V> Map.Entry<K, V>.component1() = getKey()</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>operator fun <K, V> Map.Entry<K, V>.component2() = getValue()</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>operator fun <K, V> Map.Entry<K, V>.component2() = getValue()</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight>مما يجعل من السهل استخدام التصريحات <del class="diffchange diffchange-inline">المُفكَّكة </del>في حلقات <code>for</code> بالاعتماد على maps (وكذلك كائنات مجموعات أصناف البيانات [collections of data class instances] وما يماثلها).</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight>مما يجعل من السهل استخدام التصريحات <ins class="diffchange diffchange-inline">بالتفكيك </ins>في حلقات <code>for</code> بالاعتماد على maps (وكذلك كائنات مجموعات أصناف البيانات [collections of data class instances] وما يماثلها).</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== استخدام الشرطة السفليّة (_) للمتحولات غير المُستخدَمة (بدءًا من الإصدار 1.1) ==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== استخدام الشرطة السفليّة (_) للمتحولات غير المُستخدَمة (بدءًا من الإصدار 1.1) ==</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>إن لم يكن هناك حاجةٌ للمتحوّل في التصريح <del class="diffchange diffchange-inline">المُفكَّك </del>فيمكن الاستغناءُ عن اسمه بالشرطة السفليّة مثل:<syntaxhighlight lang="kotlin"></div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>إن لم يكن هناك حاجةٌ للمتحوّل في التصريح <ins class="diffchange diffchange-inline">بالتفكيك </ins>فيمكن الاستغناءُ عن اسمه بالشرطة السفليّة مثل:<syntaxhighlight lang="kotlin"></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>val (_, status) = getResult()</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>val (_, status) = getResult()</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight>وبهذه الطريقة لن تُستدعَى دالة الجزء (component function) الموافقةِ له.</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight>وبهذه الطريقة لن تُستدعَى دالة الجزء (component function) الموافقةِ له.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== التفكيك في lambdas (بدءًا من الإصدار 1.1) ==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== التفكيك في lambdas (بدءًا من الإصدار 1.1) ==</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>تُستخدَم صيغةُ التصريحات <del class="diffchange diffchange-inline">المُفكَّكة </del>في متحولات lambda أيضًا، وإذا كان متحول lambda من النوع <code>Pair</code> (أو من النوع <code>Map.Entry</code> أو أي نوعٍ آخر يحتوي على دالة جزءٍ [component function] مناسبةٍ) فيُمكن حينئذٍ استخدام أكثر من متحولٍ (تُحاط المتحولات بالأقواس <code>()</code>)، كما في الشيفرة الآتية:<syntaxhighlight lang="kotlin"></div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>تُستخدَم صيغةُ التصريحات <ins class="diffchange diffchange-inline">بالتفكيك </ins>في متحولات lambda أيضًا، وإذا كان متحول lambda من النوع <code>Pair</code> (أو من النوع <code>Map.Entry</code> أو أي نوعٍ آخر يحتوي على دالة جزءٍ [component function] مناسبةٍ) فيُمكن حينئذٍ استخدام أكثر من متحولٍ (تُحاط المتحولات بالأقواس <code>()</code>)، كما في الشيفرة الآتية:<syntaxhighlight lang="kotlin"></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>map.mapValues { entry -> "${entry.value}!" }</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>map.mapValues { entry -> "${entry.value}!" }</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>map.mapValues { (key, value) -> "$value!" }</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>map.mapValues { (key, value) -> "$value!" }</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight>ويتَّضِح الفرق بين التصريح عن متحوِّلين والتصريح <del class="diffchange diffchange-inline">المُفكَّك عنهما، </del>كما يلي:<syntaxhighlight lang="kotlin"></div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight>ويتَّضِح الفرق بين التصريح عن متحوِّلين والتصريح <ins class="diffchange diffchange-inline">عنهما بالتفكيك، </ins>كما يلي:<syntaxhighlight lang="kotlin"></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{ a -> ... } // متحول واحد</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{ a -> ... } // متحول واحد</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{ a, b -> ... } // متحولان</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{ a, b -> ... } // متحولان</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{ (a, b) -> ... } // تصريح مفكك بمتحولين</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{ (a, b) -> ... } // تصريح مفكك بمتحولين</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{ (a, b), c -> ... } // تصريح مفكك بمتحولين ومتحول ثالث مستقل</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{ (a, b), c -> ... } // تصريح مفكك بمتحولين ومتحول ثالث مستقل</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight>فإن كان أحد أجزاء التصريح <del class="diffchange diffchange-inline">المُفكَّك </del>غير مستخدمٍ يُستعاض عنه بالشرطة السفليّة دون الحاجة لتسميته، مثل:<syntaxhighlight lang="kotlin"></div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight>فإن كان أحد أجزاء التصريح <ins class="diffchange diffchange-inline">بالتفكيك </ins>غير مستخدمٍ يُستعاض عنه بالشرطة السفليّة دون الحاجة لتسميته، مثل:<syntaxhighlight lang="kotlin"></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>map.mapValues { (_, value) -> "$value!" }</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>map.mapValues { (_, value) -> "$value!" }</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight>كما ويمكن تحديد النوع الإجماليّ لمتحولات التصريح <del class="diffchange diffchange-inline">المُفكَّك </del>أو لمتحولٍ واحدٍ منها بشكلٍ منفصلٍ كما في الشيفرة الآتية:<syntaxhighlight lang="kotlin"></div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight>كما ويمكن تحديد النوع الإجماليّ لمتحولات التصريح <ins class="diffchange diffchange-inline">بالتفكيك </ins>أو لمتحولٍ واحدٍ منها بشكلٍ منفصلٍ كما في الشيفرة الآتية:<syntaxhighlight lang="kotlin"></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>map.mapValues { (_, value): Map.Entry<Int, String> -> "$value!" }</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>map.mapValues { (_, value): Map.Entry<Int, String> -> "$value!" }</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l67" >سطر 67:</td>
<td colspan="2" class="diff-lineno">سطر 67:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== مصادر ==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== مصادر ==</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* [https://kotlinlang.org/docs/reference/multi-declarations.html صفحة <del class="diffchange diffchange-inline">تفكيك التصريحات </del>في التوثيق الرسميّ للغة Kotlin]</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* [https://kotlinlang.org/docs/reference/multi-declarations.html صفحة <ins class="diffchange diffchange-inline">التصريح بالتفكيك </ins>في التوثيق الرسميّ للغة Kotlin]</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[تصنيف:Kotlin]]</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[تصنيف:Kotlin]]</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[تصنيف:Kotlin Objects]]</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[تصنيف:Kotlin Objects]]</div></td></tr>
</table>
Nourtam
https://wiki.hsoub.com/index.php?title=Kotlin/multi_declarations&diff=3371&oldid=prev
Nourtam: أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:تفكيك التصريحات (Destructuring Declarations) في لغة Kotlin}}</noinclude> == التصريح المُفكّك == قد تحتا...'
2018-03-15T11:13:08Z
<p>أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:تفكيك التصريحات (Destructuring Declarations) في لغة Kotlin}}</noinclude> == التصريح المُفكّك == قد تحتا...'</p>
<p><b>صفحة جديدة</b></p><div><noinclude>{{DISPLAYTITLE:تفكيك التصريحات (Destructuring Declarations) في لغة Kotlin}}</noinclude><br />
== التصريح المُفكّك ==<br />
قد تحتاج في بعض الأحيان لتفكيك الكائن (object) إلى عددٍ من المتحولات، مثل:<syntaxhighlight lang="kotlin"><br />
val (name, age) = person <br />
</syntaxhighlight>تٌسمَّى الصيغة السابقة بالتصريح المُفكَّك والذي يُنشِئ أكثر من متحولٍ بنفس الوقت (وهما المتحولان <code>name</code> و <code>age</code>) حيث يُسمح باستخدامهما بشكلٍ مستقلٍ تمامًا كما في الشيفرة الآتية:<syntaxhighlight lang="kotlin"><br />
println(name)<br />
println(age)<br />
</syntaxhighlight>إذ يُترجَم التصريح المُفكَّك كما يلي:<syntaxhighlight lang="kotlin"><br />
val name = person.component1()<br />
val age = person.component2()<br />
</syntaxhighlight>حيث تُعدُّ الدالتان <code>component1()</code> و <code>component2()</code> مثالًا عن الاصطلاحات الأساسيّة المُستخدَمة في لغة Kotlin (راجع المُعامِلات مثل <code>+</code> و <code>*</code> وحلقات <code>for</code> و... إلخ.)، ويُسمَح بوجود أيّ كائنٍ في الجانب الأيمن من التصريح المُفكَّك طالما أمكن استدعاء العدد المطلوب من دوال الأجزاء (component functions) عبره (قد تكون بالأسماء <code>component3()</code> و <code>component4()</code> وهكذا) والتي يجب أن تُحدَّد بالكلمة المفتاحيّة <code>operator</code> للسماح باستخدامها في التصريح المُفكَّك.<br />
<br />
كما ويُستفاد من التصريح المُفكَّك في حلقة <code>for</code> بالشكل:<syntaxhighlight lang="kotlin"><br />
for ((a, b) in collection) { ... }<br />
</syntaxhighlight>حيث تحصل المتحولات <code>a</code> و <code>b</code> على القيم من استدعاء الدالتين <code>component1()</code> و <code>component2()</code> في عناصر المجموعة (collection).<br />
<br />
== تطبيقٌ عمليٌّ: إعادة قيمتين من الدالة ==<br />
عند الحاجة إلى إعادة عنصرين من الدالة (لنقل مثلًا إعادة كائن النتيجة وحالةٍ ما) فإن الطريقة المُتَّفق عليها للقيام بذلك هي إنشاء [[Kotlin/data classes|صنفٍ للبيانات (data class)]] وإعادة كائنٍ منه، كما في الشيفرة الآتية:<syntaxhighlight lang="kotlin"><br />
data class Result(val result: Int, val status: Status)<br />
fun function(...): Result {<br />
// بعض الحسابات<br />
<br />
return Result(result, status)<br />
}<br />
<br />
// الآن.. استخدام الدالة<br />
val (result, status) = function(...)<br />
</syntaxhighlight>ويُسمَح باستخدام التصريح المُفكَّك هنا لأنّ أصناف البيانات تعرِّف دوال الأجزاء <code>componentN()</code> تلقائيًا.<br />
<br />
'''ملاحظة:''' يمكن استخدام الصنف القياسي <code>Pair</code> لتعيد الدالة <code>function()</code> النوع <code>Pair<Int, Status></code>، ولكن من الأفضل تسميةُ البيانات بما يتناسب مع استخدامها.<br />
<br />
== تطبيقٌ عمليٌّ: التصريحات المُفكَّكة و Maps ==<br />
إنّ الطريقة الأنسب للمرور بعناصر map هي كما في الشيفرة الآتية:<syntaxhighlight lang="kotlin"><br />
for ((key, value) in map) {<br />
// القيام بالتعليمات استنادًا إلى القيمة والمفتاح<br />
}<br />
</syntaxhighlight>وهنا يجب التقيد بما يلي:<br />
* تمثيل كائن map كتسلسلٍ (sequence) من القيم من خلال الدالة <code>iterator()</code><br />
* تمثيل كلٍّ من العناصر كزوجٍ (pair) من خلال الدالتين <code>component1()</code> و <code>component2()</code><br />
إذ تزوِّد المكتبة القياسية بمثل هذه الإضافات:<syntaxhighlight lang="kotlin"><br />
operator fun <K, V> Map<K, V>.iterator(): Iterator<Map.Entry<K, V>> = entrySet().iterator()<br />
operator fun <K, V> Map.Entry<K, V>.component1() = getKey()<br />
operator fun <K, V> Map.Entry<K, V>.component2() = getValue()<br />
</syntaxhighlight>مما يجعل من السهل استخدام التصريحات المُفكَّكة في حلقات <code>for</code> بالاعتماد على maps (وكذلك كائنات مجموعات أصناف البيانات [collections of data class instances] وما يماثلها).<br />
<br />
== استخدام الشرطة السفليّة (_) للمتحولات غير المُستخدَمة (بدءًا من الإصدار 1.1) ==<br />
إن لم يكن هناك حاجةٌ للمتحوّل في التصريح المُفكَّك فيمكن الاستغناءُ عن اسمه بالشرطة السفليّة مثل:<syntaxhighlight lang="kotlin"><br />
val (_, status) = getResult()<br />
</syntaxhighlight>وبهذه الطريقة لن تُستدعَى دالة الجزء (component function) الموافقةِ له.<br />
<br />
== التفكيك في lambdas (بدءًا من الإصدار 1.1) ==<br />
تُستخدَم صيغةُ التصريحات المُفكَّكة في متحولات lambda أيضًا، وإذا كان متحول lambda من النوع <code>Pair</code> (أو من النوع <code>Map.Entry</code> أو أي نوعٍ آخر يحتوي على دالة جزءٍ [component function] مناسبةٍ) فيُمكن حينئذٍ استخدام أكثر من متحولٍ (تُحاط المتحولات بالأقواس <code>()</code>)، كما في الشيفرة الآتية:<syntaxhighlight lang="kotlin"><br />
map.mapValues { entry -> "${entry.value}!" }<br />
map.mapValues { (key, value) -> "$value!" }<br />
</syntaxhighlight>ويتَّضِح الفرق بين التصريح عن متحوِّلين والتصريح المُفكَّك عنهما، كما يلي:<syntaxhighlight lang="kotlin"><br />
{ a -> ... } // متحول واحد<br />
{ a, b -> ... } // متحولان<br />
{ (a, b) -> ... } // تصريح مفكك بمتحولين<br />
{ (a, b), c -> ... } // تصريح مفكك بمتحولين ومتحول ثالث مستقل<br />
</syntaxhighlight>فإن كان أحد أجزاء التصريح المُفكَّك غير مستخدمٍ يُستعاض عنه بالشرطة السفليّة دون الحاجة لتسميته، مثل:<syntaxhighlight lang="kotlin"><br />
map.mapValues { (_, value) -> "$value!" }<br />
</syntaxhighlight>كما ويمكن تحديد النوع الإجماليّ لمتحولات التصريح المُفكَّك أو لمتحولٍ واحدٍ منها بشكلٍ منفصلٍ كما في الشيفرة الآتية:<syntaxhighlight lang="kotlin"><br />
map.mapValues { (_, value): Map.Entry<Int, String> -> "$value!" }<br />
<br />
map.mapValues { (_, value: String) -> "$value!" }<br />
</syntaxhighlight><br />
<br />
== مصادر ==<br />
* [https://kotlinlang.org/docs/reference/multi-declarations.html صفحة تفكيك التصريحات في التوثيق الرسميّ للغة Kotlin]<br />
[[تصنيف:Kotlin]]<br />
[[تصنيف:Kotlin Objects]]<br />
[[تصنيف:Kotlin Maps]]<br />
[[تصنيف:Kotlin Lambdas]]<br />
[[تصنيف:Kotlin Functions]]</div>
Nourtam