In Kotlin, you can achieve the same behavior as the Java example by using a lambda directly without the curly braces. This allows the lambda to be lazily evaluated, similar to how it works in Java. Here’s how you can do it:
kotlinlog.debug("random {}", { UUID.randomUUID() })
However, this will indeed print the lambda type, not its result. To print the result of the lambda, you need to explicitly invoke it:
kotlinlog.debug("random {}", { UUID.randomUUID() }())
This will print the random UUID generated by the lambda function.
المزيد من المعلومات
بالتأكيد! في Kotlin، يمكنك استخدام تعبير اللامبدا بدون إشارات التقويس {}
لتحقيق نفس السلوك كما في المثال الذي ذكرته من log4j2. هذا يسمح بتقييم التعبير بشكل كسول، مماثلاً لكيفية عمله في Java. هنا كيف يمكنك القيام بذلك:
kotlinlog.debug("random {}", { UUID.randomUUID() })
ومع ذلك، سيتم طباعة نوع التعبير اللامبدا، لا نتيجته. لطباعة نتيجة التعبير اللامبدا، يجب عليك استدعاءها بشكل صريح:
kotlinlog.debug("random {}", { UUID.randomUUID() }())
سيقوم هذا بطباعة الـ UUID العشوائي الذي تم إنشاؤه بواسطة دالة التعبير اللامبدا.