মেমো Kotlin
Publié le 29 May 2022
ভালো লিঙ্ক
বিভিন্ন কোডের টুকরা
মানচিত্র কমানো
একটি বাইটের তালিকাকে একটি স্ট্রিংয়ের তালিকায় রূপান্তরিত করা এবং স্ট্রিংয়ের তালিকাকে সংক্ষিপ্ত করা
একটি string যাতে সংযোজন রয়েছে। কীভাবে requestBodyContent:byte[] প্যারামিটার সহ পাঠানো request লগ করবেন
log.info(
requestBodyContent!!.map { it.toInt().toChar().toString() }
.reduce { request: String, s: String -> request + s }
)
এনাম এবং সিলড ক্লাস
ফাংশনাল ইন্টারফেস ও মেথড রেফারেন্স
একটি 엔িটি ডোমেইন মডেল DTO-এ রেফারেন্স পদ্ধতি (ফাংশনাল স্টাইল - 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() }
}
কোটলিনে apply, run, let, also, use এবং with এর মধ্যে পার্থক্য কি?
কোটলিন ফাংশন এবং ল্যাম্বা ফর্ম ব্যবহারের তুলনা রেফারেন্স
আবেদন করুন
run, let, also, use, et `with`বস্তুগুলোকে প্রক্রিয়া করার বিভিন্ন উপায় অফার করে। প্রত্যেকের নিজস্ব ব্যবহারের ক্ষেত্র এবং আচরণ আছে। আরো, ল্যাম্ব্ডা রেফারেন্স ফর্মগুলো বিদ্যমান ল্যাম্ব্ডা ফাংশনগুলকে উল্লেখ করে কোডটি আরও পড়া যায় এবং পুনরাবৃত্তিযোগ্য করে তোলে।ফাংশন`apply` est utilisée pour configurer un objet pendant sa création. Elle retourne l’objet sur lequel elle est appelée.
Lambda রেফারেন্স সহ উদাহরণ :
val someObject = SomeClass().apply(::configureObject)
উদাহরণ ساتھ lambda :
val someObject = SomeClass().apply {
// configuration des propriétés de someObject
}
দৌড়ানো
ফাংশন`run`এটি একটি অবজেক্টে কোডের একটি ব্লক চালাতে এবং সেই ব্লকের ফলাফল ফেরত দেওয়ার জন্য ব্যবহৃত হয়।
উদাহরণ lambda রেফারেন্সের সাথে :
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`এটি একটি বস্তুর উপর একটি কোড ব্লক চালানোর জন্য ব্যবহার করা হয় এবং কোড ব্লকের ফলাফলটি রিটার্ন করে।
উदাহরণ lambda রেফারেন্সের সাথে :
val result = someObject.let(::processObject)
ল্যাম্বডা সহ উদাহরণ :
val result = someObject.let {
// bloc de code à exécuter sur someObject
// la dernière expression est renvoyée
}
এছাড়াও
ফাংশন`also`এটি একটি বস্তুতে একটি অতিরিক্ত ক্রিয়া সম্পাদনের জন্য ব্যবহৃত হয় এবং কল করা বস্তুটিই ফেরত দেওয়া হয়।
উদাহরণ সঙ্গে lambda reference :
someObject.also(::performAdditionalAction)
উদাহরণ ল্যাম্বডা দিয়ে :
someObject.also {
// action additionnelle sur someObject
}
(Empty)
ফাংশন`use`এটি ব্যবহার করা হয় যেসব সম্পদগুলো ব্যবহার শেষ होने पर বন্ধ করতে হয়। এটি স্বয়ংক্রিয়ভাবে ফাংশনটি কল করে।`close`ব্লকের শেষে
উদাহরণ lambda reference সঙ্গে
someResource.use(::useResource)
ল্যাম্বডা দিয়ে উদাহরণ :
someResource.use {
// travailler avec la ressource
}
with
ফাংশন`with`এটি একাধিক পদ্ধতিকে অবজেক্টে কল করতে ব্যবহৃত হয়, অবজেক্টের নাম পুনরায় লেখা না করেই এবং শেষে পাওয়া biểuকের ফলাফল ফেরত দেয়।
উদাহরণ lambda রেফারেন্স :
val result = with(someObject, ::processWithObject)
উদাহরণ lambda দিয়ে :
val result = with(someObject) {
// appeler des méthodes sur someObject
// la dernière expression est renvoyée
}
ল্যাম্বডা রেফারেন্স ফর্ম বা ব্লক ব্যবহার করে`{}`আপনি তর্ককে আলাদা-আলাদা ফাংশনে এনক্যাপসুলেট করতে পারেন, এভাবে কোডের পঠনযোগ্যতা এবং পুন:ব্যবহারযোগ্যতা উন্নত করে।
let Function Kotlin-এ
ফাংশন`let`Kotlin-এ একটি অবজেক্টে অপারেশন করার জন্য এবং একটি ভিন্ন ফলাফল ফেরত দেওয়ার জন্য ব্যবহৃত হয়। তবু, এটি নোট করা গুরুত্বপূর্ণ যে ফাংশন`let`এটি অবজেক্টের প্রাথমিক অবস্থা পরিবর্তন করে না, য অবজেক্টে এটি কল করা হয়।
হস্তাক্ষর |
|
ব্যবহার |
ফাংশন`let`এটিগeneral… No. |
ফল |
মূল্য প্রত্যাহিত মান`let`এটি ল্যাম্বডা এক্সপ্রেশনের আর্গুমেন্টে পাস করা ফলাফল, সাধারণত অবজেক্টে করা অপারেশনগুলো ফলাফল। |
পার্শ্বপ্রতিক্রিয়া |
�যদিও ফাংশনটি`let`এটি অবজেক্টে পার্শ্ববর্তী প্রভাব ফেলতে পারে যখন এটি ল্যামব্ডা অভিব্যক্তিতে ব্যবহৃত হয়, তবে এটি অবজেক্টের প্রারম্ভিক অবস্থা পরিবর্তন করে না। |
সুতরাং, ফাংশন`let`একটি অবজেক্টে অপারেশন করতে, একটি প্রাপ্ত ফলাফল পেতে এবং মূল অবজেক্টের আখণ্ডতা সংরক্ষণ করতে শালীন উপায়।