الفرق بين المراجعتين لصفحة: «Kotlin/reflect/reflect»

من موسوعة حسوب
لا ملخص تعديل
طلا ملخص تعديل
 
(مراجعتان متوسطتان بواسطة مستخدمين اثنين آخرين غير معروضتين)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: التابع reflect()‎ في لغة Kotlin}}</noinclude>
<noinclude>{{DISPLAYTITLE:الدالة <code>reflect()‎</code> في Kotlin}}</noinclude>
الدالة <code>reflect()‎</code> هي واجهة برمجية (API) تجريبية، حيث تُعطى دالة أو تعبير لامبدا ( lambda expression)، وتعيد نسخة من النوع <code>KFunction</code> توفر معلومات داخلية عن تلك الدالة أو تعبير لامبدا الممرّر وعن وسائطه(parameters). في الوقت الحالي لا تٌدعم كل الميزات، بالخصوص <code>KCallable.call</code> و <code>KCallable.callBy</code> .
الدالة <code>reflect()‎</code> هي واجهة برمجية (API) تجريبية؛ إن استدعيت مع تعبير تعريف دالة (function expression) أو [[Kotlin/lambdas#.D8.AA.D8.B9.D8.A7.D8.A8.D9.8A.D8.B1 Lambda .D9.88.D8.A7.D9.84.D8.AF.D9.88.D8.A7.D9.84 .D8.A7.D9.84.D9.85.D8.AC.D9.87.D9.88.D9.84.D8.A9 .28Anonymous Functions.29|تعبير lambda]]، فستعيد نسخةً من <code>[[Kotlin/KFunction|KFunction]]</code> تزودنا بالإمكانيات الداخلية (introspection capabilities) لتعبير تعريف الدالة أو [[Kotlin/lambdas#.D8.AA.D8.B9.D8.A7.D8.A8.D9.8A.D8.B1 Lambda .D9.88.D8.A7.D9.84.D8.AF.D9.88.D8.A7.D9.84 .D8.A7.D9.84.D9.85.D8.AC.D9.87.D9.88.D9.84.D8.A9 .28Anonymous Functions.29|تعبير lambda]] ذاك المعطى وعن معاملاته. ليست جميع الميزات مدعومةً في الوقت الحالي، تحديدًا <code>KCallable.call</code> و <code>KCallable.callBy</code>.
== البنية العامة ==
== البنية العامة ==
<syntaxhighlight lang="kotlin">
<syntaxhighlight lang="kotlin">
fun <R> Function<R>.reflect(): KFunction<R>?
fun <R> Function<R>.reflect(): KFunction<R>?


</syntaxhighlight>ويُلاحظ وجود الكلمة المفتاحية <code>operator</code> للدلالة على أنّ هذا التابع مرتبط بمعامل الفهرسة المذكور سابقًا.
</syntaxhighlight>منصة التشغيل المطلوبة: '''JVM'''.


== أمثلة ==
== انظر أيضًا ==
 
* الواجهة <code>[[Kotlin/Function|Function]]</code>.
=== استخدام التابع <code>set()‎</code> على مصفوفة أعداد صحيحة ===
تُنشِئ الشيفرة الآتية مصفوفةً من ستة أعدادٍ بالاعتماد على الدالة <code>FloatArray</code>، ثم تعيّن عنصرين من المصفوفة بطريقتين: الأولى باستدعاء التابع <code>set()</code>‎ مباشرةً، والثانية باستخدام معامل الفهرسة (القوسين بالشكل <code>[index]</code>):<syntaxhighlight lang="kotlin">
import java.util.Arrays
 
fun main(args: Array<String>) {
val f: (Int) -> Float = { x -> x*4f }
val array = FloatArray(6, f)
   
array.set(2,5.34f)
array[1] = 98.5f
   
println(Arrays.toString(array)) // [0.0, 98.5, 5.34, 12.0, 16.0, 20.0]
}
</syntaxhighlight>


== انظر أيضًا ==
* [[Kotlin/lambdas|الدوال من المرتبة الأعلى (Higher-Order Functions) و تعابير Lambdas]].
* الخاصيّة <code>[[Kotlin/FloatArray/size|FloatArray.size]]</code>: تعبِّر عن عدد العناصر الموجودة في المصفوفة.


== مصادر ==
== مصادر ==
* [https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-float-array/set.html التابع reflect في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
* [https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.reflect.jvm/reflect.html صفحة الدالة ()reflect في التوثيق الرسميّ للمكتبة القياسيّة في لغة Kotlin.]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin]]
[[تصنيف:Kotlin Method]]
[[تصنيف:Kotlin Function]]
[[تصنيف:Kotlin Reflect]]
[[تصنيف:Kotlin JVM]]

المراجعة الحالية بتاريخ 11:35، 9 سبتمبر 2018

الدالة reflect()‎ هي واجهة برمجية (API) تجريبية؛ إن استدعيت مع تعبير تعريف دالة (function expression) أو تعبير lambda، فستعيد نسخةً من KFunction تزودنا بالإمكانيات الداخلية (introspection capabilities) لتعبير تعريف الدالة أو تعبير lambda ذاك المعطى وعن معاملاته. ليست جميع الميزات مدعومةً في الوقت الحالي، تحديدًا KCallable.call و KCallable.callBy.

البنية العامة

fun <R> Function<R>.reflect(): KFunction<R>?

منصة التشغيل المطلوبة: JVM.

انظر أيضًا

مصادر