Kotlin میمو
Publié le 29 May 2022
اچھی لنکس
متنوع کوڈ کے ٹکڑے
مپ ریڈیوس
بائٹس کی فہرست کو سٹرنگز کی فہرست میں تبدیل کریں اور سٹرنگز کی فہرست کا خلاصہ کریں
ایک سٹرنگ میں کنکینیٹیشن شامل ہے۔ کیسے لاگ کریں request بھیجا(requestBodyContent:byte[])
log.info(
requestBodyContent!!.map { it.toInt().toChar().toString() }
.reduce { request: String, s: String -> request + s }
)
enum aur sealed classes
فنکشنل انٹرفیس اور طریقہ رفرنس
ہم ایک انٹیٹی کو DTO ڈومین ماڈل میں ایک referência طریقے (فنکشنل سٹائل - java 8) استعمال کر کے بدل سکتے ہیں
fun findAllByLoginNot(
pageable:Pageable,
login:String)
:Page<UserDto> {
return userDao.findAllByLoginNot(
pageable,
login).map(::fromEntity)
}
ایکhttps://stackoverflow.com/a/22245383/837404[اچھی وضاحت]
معمولی آؤٹ پکپ لینا
package functional
import java.io.ByteArrayOutputStream
import java.io.PrintStream
import java.lang.System.out
import java.lang.System.setOut
import kotlin.test.AfterTest
import kotlin.test.BeforeTest
import kotlin.test.Test
import kotlin.test.assertEquals
class BasicsHOF {
private val standardOut: PrintStream? = out
private val outputStreamCaptor = ByteArrayOutputStream()
@BeforeTest
fun setUp() = setOut(PrintStream(outputStreamCaptor))
@AfterTest
fun tearDown() = setOut(standardOut)
@Test
fun `three times dope`() {
3.times { println("Hello") }
assertEquals(
buildString {
repeat(3) { append("Hello\n") }
deleteAt(length - 1)
}, outputStreamCaptor
.toString()
.trim()
)
}
fun Int.times(fn: () -> Unit) = (1..this).forEach { _ -> fn() }
}
کotlin میں apply, run, let, also, use اور with کے درمیان فرق کیا ہے؟
Kotlin فنگشنز کی موازاة اور لامبڈا فارمز کے استعمال کی رفرنس
لگو لگانا
run, let, also, use, et `with`یہ مختلف اشیاء کو متصرف کرنے کے مختلف طریقے فراہم کرتی ہیں۔ ہر کی اپنی مخصوص استعمال کے حالات اور سلوک ہیں۔ مزید، لامبڈا رفرنس فارمز کوڈ کو زیادہ پڑھنے میں آسان اور استعمال کرنے میں لچکدار بناتی ہیں، موجودہ لامبڈا فنکشنز کی طرف اشارہ کر کے۔فنکشن`apply`یہ ایک آبجکت کو بنانے کے دوران تنظیم کرنے کے لیے استعمال ہوتی ہے۔ یہ بنائے جانے والی آبجکت پر استعمال ہونے پر واپس लौٹاتی ہے۔
مثال لامبڈا رفرنس کے ساتھ :
val someObject = SomeClass().apply(::configureObject)
لامبڈا کے ساتھ مثال :
val someObject = SomeClass().apply {
// configuration des propriétés de someObject
}
دورنا
فونکشن`run`ایسے کوڈ بلاک کو ایک آبجیکٹ پر چلانے کے لیے استعمال ہوتا ہے اور کوڈ بلاک کا نتیجہ واپس کرتا ہے۔
لامبڈا رفرنس کے ساتھ مثال :
val result = someObject.run(::someFunction)
مثال کے ساتھ lambda :
val result = someObject.run {
// bloc de code à exécuter sur someObject
// la dernière expression est renvoyée
}
let
عمل`let`ایک شیء پر کوڈ کے بلوک کو چلانے اور اس بلوک کا نتیجہ واپس کرنے کے لیے استعمال کی جاتی ہے۔
لامبڈا رفرنس کے ساتھ مثال :
val result = someObject.let(::processObject)
لامبدا کے ساتھ مثال :
val result = someObject.let {
// bloc de code à exécuter sur someObject
// la dernière expression est renvoyée
}
بھی
ال فانکشن`also`ایک اجسام پر اضافی عمل کرنے کے لئے استعمال کی جاتی ہے اور وہی اجسام واپس کر دیا جاتا ہے جس پر اس کی عمل کی جاتی ہے۔
لامبڈا رفرنس کے ساتھ مثال :
someObject.also(::performAdditionalAction)
لامبڈا کے ساتھ مثال :
someObject.also {
// action additionnelle sur someObject
}
استعمال
وظیفہ`use`اس استعمال کے بعد بند ہونے والی وسائل کے ساتھ کام کرنے کے لیے استعمال ہوتی ہے۔ یہ خودکار طور پر فنگکشن کو بلاتی ہے`close`بلوک کے آخر میں.
لامبڈا رفرنس کے ساتھ مثال :
someResource.use(::useResource)
لامبدا کے ساتھ مثال :
someResource.use {
// travailler avec la ressource
}
ساتھ
وظیفہ`with`یہ کسی اشیاء پر ایک سے زیادہ طریقے بلائے جانے کے لیے استعمال ہوتی ہے، جس میں اس کے نام کا تکرار نہیں ہوتا اور یہ آخری اظہار کے نتیجے کو واپس کر دیتی ہے۔
lambda reference کے ساتھ مثال:
val result = with(someObject, ::processWithObject)
لامبدا کے ساتھ مثال :
val result = with(someObject) {
// appeler des méthodes sur someObject
// la dernière expression est renvoyée
}
لامبڈا ریفرنس فارمز یا بلاکس استعمال کرتے ہوئے`{}`, آپ لوجیک کو مختلف فنجن میں لفاف کر سکتے ہیں، جس سے کوڈ کی پڑھنی اور قابلیتِ استعمال میں اضافہ ہوتا ہے۔
let Function میں Kotlin
فونکشن`let`Kotlin کا استعمال ایک آبجیکٹ پر آپریشنز کرنے اور مختلف نتیجہ واپس کرنے کے لیے کیا جاتا ہے۔ تاہم، یہ ضروری ہے کہ ياد رکھا جائے کہ فنگشن`let`یہ شیء کی ابتدائی حالت کو تبدیل نہیں کرتی، جس پر یہ بولائی جاتی ہے۔
امضا |
|
استعمال |
فنکشن`let`یہ عام طور پر ایک اشیاء پر ترنسفرمیشنز عائد کرنے اور ان ترنسفرمیشنز پر مبنی ایک نتیجہ حاصل کرنے کے لیے استعمال ہوتی ہے۔ |
نتیجہ |
فنکشن سے واپسی میں آنے والی مقدار`let`یہ لامبڈا ایکسپرشن کا نتیجہ ہے جو اس آرگومانٹ کے طور پر پاس کیا جاتا ہے، عام طور پر وہ نتیجہ ہوتا ہے جو اس اشیاء پر کردہ اعمال کا ہوتا ہے۔ |
سرحد کے اثرات |
اگرچہ فنکشن`let`� ًیہ لنبڈا ایکسپرشن میں استعمال ہونے پر آبجیکٹ پر جانچ دار اثرات ہو سکتے ہیں، لیکن یہ خود آبجیکٹ کی ابتدائی حالت کو تبدیل نہیں کرتی۔ |
لہٰذا، فنکشن`let`یہ ایک شاندار طریقہ ہے جس میں کسی آبجیکٹ پر آپریشنز انجام دیے جاتے ہیں، ساتھ ہی ایک مشتق شدہ نتیجہ بھی حاصل کیا جاتا ہے، اور اصل آبجیکٹ کی Integrity محفوظ رکھی جاتی ہے۔