نمایندگی (Delegation )
کاتلین از پیاده سازی نمایندگی با معرفی کلیدواژه ی تازه by حمایت می نماید.با به کار گیری از این کلیدواژه یا این که اسلوب نمایندگی، کاتلین به طبقه ی بدست آمده اذن میدهد به کل اسلوب های همگانی ایفا گردیده ی یک واسط به وسیله یک غرض مشترک دسترس یابد. نمونه تحت علامت میدهد این فرمان در کاتلین طراحی اپلیکیشن در مشهد به چه شکل واقعه می افتد.
Live Demo
interface Base
{
fun printMe() //abstract method
}
class BaseImpl(val x: Int) : Base {
override fun printMe() { println(x) } //implementation of the method
}
class Derived(b: Base) : Base by b // delegating the public method on the object b
fun main(args: Array) {
val b = BaseImpl(۱۰)
Derived(b).printMe() // prints 10 :: accessing the printMe() method
}
در نمونه، واسط “Base” با مشی انتزاعی اش به اسم “printme()” را داریم. در طبقه ی BaseImpl ما این “printme()” را ایفا میکنیم و آن گاه از طبقه یدیگری ما از این انجام با کلیدواژه ی “by” به کارگیری میکنیم.
کد های بالا خروجی تحت را در مرورگر نماد می دهند.
۱۰
نمایندگی خواص
در قسمت قبلی دربارهی پیاده سازی نمایندگی با کلیدواژه ی “by” آموختیم. دراین نصیب، در باب نمایندگی فوائد با به کار گیری از روال های استاندارد جانور در کتابخانه ی کاتلین میاموزیم.
نمایندگی یعنی جابجایی مسئولیت به طبقه یا این که متدی دیگر. زمانی یک خواص در برخی جای ها اعلام شدهاست، بایستی از به عبارتی کد برای اجرایشان به کارگیری کنیم.در نمونه های تحت از یکسری اسلوب های نمایندگی جان دار در کاتلین و کارکرد های استاندارد کتابخانه در طول اجرای نمایندگی در نمونه هایمان استعمال میکنیم.
به کارگیری از Lazy()
Lazy یک کارکرد lambda میباشد که یک خواص را تحت عنوان ورودی می گیردو در فیض یک مثال از Lazy که نوع خاصیت مستعمل میباشد را میدهد. برا یفهم بیشتر به نمونه ذیل دقت نمایید.
Live Demo
val myVar: String by lazy {
"Hello"
}
fun main(args: Array) {
println(myVar +" My dear friend")
}
در کد های بالا، ما متغیر “myVar” را به کارکرد Lazy جابجایی میدهیم، که در سود مقدار را به مقصودش متصب می نماید و به عبارتی را به کارکرد اساسی بازمی گرداند. در ذیل خروجی در مرورگر را میبینید.
Hello My dear friend
Delegetion.Observable()
Observable() دو برهان را برای ایفا کردن غرض و رجوع به کارکرد فراخوانده گردیده ایفا میدهد. در نمونه تحت میبینیم که چطور از مشی Observable() برای نمایندگی اعمال به کارگیری کنیم.
Live Demo
import kotlin.properties.Delegates
class User
{
var name: String by Delegates.observable("Welcome to Tutorialspoint.com") {
prop, old, new ->
println("$old -> $new")
}
}
fun main(args: Array) {
val user = User()
user.name = "first"
user.name = "second"
}
کد های بالا خروجی تحت را در مرورگر به اکران میگذارند.
first -> second
به صورت تک تک، چیدمان آن به صورت عبارت پس از اجرای کلیدواژه ی by میباشد. اسلوب های get() و set() از متغیر p به مشی های getValue()و setValue() که در کلاس نمایندگی تعریفوتمجید گردیده اند منتقل میشوند.
class Example
{
var p: String by Delegate()
}
برای کد های بالا، پیرو طبقه ی نمایندگی ای را میبینیم که برای منتصب کردن مقدار به متغیر p به اجرای آن نیاز داریم.
class Delegate
{
operator fun getValue(thisRef: Any?, property: KProperty<*>): String {
return "$thisRef, thank you for delegating \'${property.name}\' to me!"
}
operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {
println("$value has been assigned to \'${property.name} in $thisRef.\'")
}
}
در زمان تلاوت ، اسلوب getValue() فراخوانده می گردد و در حالی تهیه متغیر، روال setValue() فراخوانده میشود.
کارکرد ها
کاتلین یک لهجه نرم افزار نویسی اثبات میباشد، در سود کارکرد ها نقش مهم ای در آن اجرا می نمایند. با کارکرد ها آشنا هستیم، همان گونه که در نمونه ها مدادم از آنها به کارگیری کرده ایم. کارکرد با کلیدواژه ی “fun” اعلام میگردد. مانند لهجه گویش های نرم افزار نویسی مقصودگرا، به یک نوع بازگشتی و یک لیست عامل مورد ای نیز نیاز میباشد.
در نمونه ذیل کارکردی به اسم MyFunction را تعریف و تمجید میکنیم و از کارکرد اساسی این کارکرد را فرا میخوانیم و یک سری برهان را نظارت میکنیم.
Live Demo
fun main(args: Array) {
println(MyFunction("tutorialsPoint.com"))
}
fun MyFunction(x: String): String {
var c:String = "Hey!! Welcome To ---"
return (c+x)
}
کد های بالا خروجی ذیل را در مرورگر آرم میدهند.
Hey!! Welcome To —tutorialsPoint.com
کارکرد می بایست به طور پایین اعلام خواهد شد.
fun (:):
بهدنبال تنی چند از کارکرد های جانور در کاتلین را میبینیم.
کارکرد Lambda
Lambda کارکرد سطح بالایی میباشد که به صورت مفید کد های سطحی را معدود می نماید در حالی که کارکردی را اعلام می نماید و به عبارتی را تعریفوتمجید می نماید. کاتلین به شما اذن میدهد Lambda ی خویش را تعریفوتمجید نمائید. در کاتلین، میتواند Lambda تان را اعلام نمایید و آن Lambda را به کارکردی تخصیص دهید.
به نمونه ذیل دقت نمایید.
.
در کد های بالا، ما Lambda ی خویش را به اسم “mylambda” ساخته ایم و یک متغیر بهاین Lambda تخصیص داده ایم، که از نوع فن ای میباشد و مشمول مقدار“TutorialsPoint.com” میگردد.
Live Demo
fun main(args: Array) {
val mylambda :(String)->Unit = {s:String->print(s)}
val v:String = "TutorialsPoint.com"
mylambda(v)
}
کد های بالا خروجی تحت را در مرورگر نشانه میدهند.
TutorialsPoint.com
کارکرد باطن خطی
نمونه بالا اصول اول ی عبارت lambda را علامت میدهد که میتوانیم در نرمافزار کاتلین به کارگیری کنیم. هم اکنون، خواهیم توانست یک lambda را به کارکرد دیگری تخصیص دهیم که تا خروجی مان را بگیریم که کارکرد فراخواندن را یک کارکرد داخل خطی م ی نماید.
به نمونه پایین اعتنا فرمائید.
Live Demo
fun main(args: Array) {
val mylambda:(String)->Unit = {s:String->print(s)}
val v:String = "TutorialsPoint.com"
myFun(v,mylambda) //passing lambda as a parameter of another function
}
fun myFun(a :String, action: (String)->Unit) { //passing lambda
print("Heyyy!!!")
action(a)// call to lambda function
}
کد های بالا حروجی تحت را در مرورگر به ارمغان میاورند. با به کار گیری ی کارکرد باطن خطی lambda را تحت عنوان یک پارامتر جابجایی داده ایم. هر کارکرد دیگری با استعمال از کلیدواژه ی “inline” میتواند به کارکرد باطن خطی تبدیل گردد.
Heyyy!!!TutorialsPoint.com
اعلام از دربین غالب
کاتلین خصوصیت های متعددی از دیگر گویش های اپ نویسی داراست. این قضیه به شما این اذن را میدهد که یکسری متغیر را در یک فرصت اعلام نمایید. بدین تکنیک اعلام از در بین پیروز میگویند.
بهدنبال دکورا سیون اول ی اعلام از در میان چیره را میبینید.
val (name, age) = person
در چیدمان بالا، یک هدف ساخته ایم و آحاد آنان را در یک امر تعریفوتمجید کرده ایم. درپی میتوانیم به صورت ذیل از آنها به کارگیری کینم.
println(name)
println(age)
هم اکنون، چه طور میتوانیم از همین در برنامه خویش استعمال کنیم. به نمونه ذیل اعتنا فرمایید که یک طبقه ی شاگرد ساخته ایم با چندین خصوصیت و در پی از آنان به کار گیری میکنیم تا مقدار های غرض را بدست بیاوریم.
Live Demo
fun main(args: Array) {
val s = Student("TutorialsPoint.com","Kotlin")
val (name,subject) = s
println("You are learning "+subject+" from "+name)
}
data class Student( val a :String,val b: String ){
var name:String = a
var subject:String = b
}
کد های بالا خروجی پایین را در مرورگر به اکران میگذارند.
You are learning Kotlin from TutorialsPoint.com
تحقیق به استثناعات
استیناف به استثناعات قسمت مهمی از یک لهجه نرمافزار نویسی میباشد. این تکنیک جلوی برنامه مارا از ساخت و ساز خروجی خطا در رانتایم میگیرد. دراین نصیب، خاطر میگیریم که چطور به یک استثناء رانتایم در کاتلین مطالعه کنیم. استثناعات در کاتلین بسیار مشابه به استثناعات در جاوا میباشد. آحاد استثناعات از طبقه ی “Throwable” میایند. نمونه پایین کیفیت به کارگیری از تکنیک مطالعه به استثناعات در کاتلین را نماد میدهد.
fun main(args: Array)
{
try {
val myVar:Int = ۱۲;
val v:String = "Tutorialspoint.com";
v.toInt();
} catch(e:Exception) {
e.printStackTrace();
} finally {
println("Exception Handeling in Kotlin");
}
}
در کد های بالا، یک ریشه (String) اعلام کرده ایم و بعد آن ریشه را به یک integer چسبانده ایم که در واقعیت یک استثناء رانتایم میباشد. در سود خروجی تحت را در مرورگر میبینیم.
val myVar:Int = 12;
Exception Handeling in Kotlin
نکته : مثل جاوا، کاتلین هم بلوک آخری را پس از اجرای بلوک catch اعمال می نماید.
نمایندگی (Delegation )
کاتلین از پیاده سازی نمایندگی با معرفی کلیدواژه ی تازه by حمایت می نماید.با به کار گیری از این کلیدواژه یا این که اسلوب نمایندگی، کاتلین به طبقه ی بدست آمده اذن میدهد به کل اسلوب های همگانی ایفا گردیده ی یک واسط به وسیله یک غرض مشترک دسترس یابد. نمونه تحت علامت میدهد این فرمان در کاتلین طراحی اپلیکیشن در مشهد به چه شکل واقعه می افتد.
Live Demo
interface Base
{
fun printMe() //abstract method
}
class BaseImpl(val x: Int) : Base {
override fun printMe() { println(x) } //implementation of the method
}
class Derived(b: Base) : Base by b // delegating the public method on the object b
fun main(args: Array) {
val b = BaseImpl(۱۰)
Derived(b).printMe() // prints 10 :: accessing the printMe() method
}
در نمونه، واسط “Base” با مشی انتزاعی اش به اسم “printme()” را داریم. در طبقه ی BaseImpl ما این “printme()” را ایفا میکنیم و آن گاه از طبقه یدیگری ما از این انجام با کلیدواژه ی “by” به کارگیری میکنیم.
کد های بالا خروجی تحت را در مرورگر نماد می دهند.
۱۰
نمایندگی خواص
در قسمت قبلی دربارهی پیاده سازی نمایندگی با کلیدواژه ی “by” آموختیم. دراین نصیب، در باب نمایندگی فوائد با به کار گیری از روال های استاندارد جانور در کتابخانه ی کاتلین میاموزیم.
نمایندگی یعنی جابجایی مسئولیت به طبقه یا این که متدی دیگر. زمانی یک خواص در برخی جای ها اعلام شدهاست، بایستی از به عبارتی کد برای اجرایشان به کارگیری کنیم.در نمونه های تحت از یکسری اسلوب های نمایندگی جان دار در کاتلین و کارکرد های استاندارد کتابخانه در طول اجرای نمایندگی در نمونه هایمان استعمال میکنیم.
به کارگیری از Lazy()
Lazy یک کارکرد lambda میباشد که یک خواص را تحت عنوان ورودی می گیردو در فیض یک مثال از Lazy که نوع خاصیت مستعمل میباشد را میدهد. برا یفهم بیشتر به نمونه ذیل دقت نمایید.
Live Demo
val myVar: String by lazy {
"Hello"
}
fun main(args: Array) {
println(myVar +" My dear friend")
}
در کد های بالا، ما متغیر “myVar” را به کارکرد Lazy جابجایی میدهیم، که در سود مقدار را به مقصودش متصب می نماید و به عبارتی را به کارکرد اساسی بازمی گرداند. در ذیل خروجی در مرورگر را میبینید.
Hello My dear friend
Delegetion.Observable()
Observable() دو برهان را برای ایفا کردن غرض و رجوع به کارکرد فراخوانده گردیده ایفا میدهد. در نمونه تحت میبینیم که چطور از مشی Observable() برای نمایندگی اعمال به کارگیری کنیم.
Live Demo
import kotlin.properties.Delegates
class User
{
var name: String by Delegates.observable("Welcome to Tutorialspoint.com") {
prop, old, new ->
println("$old -> $new")
}
}
fun main(args: Array) {
val user = User()
user.name = "first"
user.name = "second"
}
کد های بالا خروجی تحت را در مرورگر به اکران میگذارند.
first -> second
به صورت تک تک، چیدمان آن به صورت عبارت پس از اجرای کلیدواژه ی by میباشد. اسلوب های get() و set() از متغیر p به مشی های getValue()و setValue() که در کلاس نمایندگی تعریفوتمجید گردیده اند منتقل میشوند.
class Example
{
var p: String by Delegate()
}
برای کد های بالا، پیرو طبقه ی نمایندگی ای را میبینیم که برای منتصب کردن مقدار به متغیر p به اجرای آن نیاز داریم.
class Delegate
{
operator fun getValue(thisRef: Any?, property: KProperty<*>): String {
return "$thisRef, thank you for delegating \'${property.name}\' to me!"
}
operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {
println("$value has been assigned to \'${property.name} in $thisRef.\'")
}
}
در زمان تلاوت ، اسلوب getValue() فراخوانده می گردد و در حالی تهیه متغیر، روال setValue() فراخوانده میشود.
کارکرد ها
کاتلین یک لهجه نرم افزار نویسی اثبات میباشد، در سود کارکرد ها نقش مهم ای در آن اجرا می نمایند. با کارکرد ها آشنا هستیم، همان گونه که در نمونه ها مدادم از آنها به کارگیری کرده ایم. کارکرد با کلیدواژه ی “fun” اعلام میگردد. مانند لهجه گویش های نرم افزار نویسی مقصودگرا، به یک نوع بازگشتی و یک لیست عامل مورد ای نیز نیاز میباشد.
در نمونه ذیل کارکردی به اسم MyFunction را تعریف و تمجید میکنیم و از کارکرد اساسی این کارکرد را فرا میخوانیم و یک سری برهان را نظارت میکنیم.
Live Demo
fun main(args: Array) {
println(MyFunction("tutorialsPoint.com"))
}
fun MyFunction(x: String): String {
var c:String = "Hey!! Welcome To ---"
return (c+x)
}
کد های بالا خروجی ذیل را در مرورگر آرم میدهند.
Hey!! Welcome To —tutorialsPoint.com
کارکرد می بایست به طور پایین اعلام خواهد شد.
fun (:):
بهدنبال تنی چند از کارکرد های جانور در کاتلین را میبینیم.
کارکرد Lambda
Lambda کارکرد سطح بالایی میباشد که به صورت مفید کد های سطحی را معدود می نماید در حالی که کارکردی را اعلام می نماید و به عبارتی را تعریفوتمجید می نماید. کاتلین به شما اذن میدهد Lambda ی خویش را تعریفوتمجید نمائید. در کاتلین، میتواند Lambda تان را اعلام نمایید و آن Lambda را به کارکردی تخصیص دهید.
به نمونه ذیل دقت نمایید.
.
در کد های بالا، ما Lambda ی خویش را به اسم “mylambda” ساخته ایم و یک متغیر بهاین Lambda تخصیص داده ایم، که از نوع فن ای میباشد و مشمول مقدار“TutorialsPoint.com” میگردد.
Live Demo
fun main(args: Array) {
val mylambda :(String)->Unit = {s:String->print(s)}
val v:String = "TutorialsPoint.com"
mylambda(v)
}
کد های بالا خروجی تحت را در مرورگر نشانه میدهند.
TutorialsPoint.com
کارکرد باطن خطی
نمونه بالا اصول اول ی عبارت lambda را علامت میدهد که میتوانیم در نرمافزار کاتلین به کارگیری کنیم. هم اکنون، خواهیم توانست یک lambda را به کارکرد دیگری تخصیص دهیم که تا خروجی مان را بگیریم که کارکرد فراخواندن را یک کارکرد داخل خطی م ی نماید.
به نمونه پایین اعتنا فرمائید.
Live Demo
fun main(args: Array) {
val mylambda:(String)->Unit = {s:String->print(s)}
val v:String = "TutorialsPoint.com"
myFun(v,mylambda) //passing lambda as a parameter of another function
}
fun myFun(a :String, action: (String)->Unit) { //passing lambda
print("Heyyy!!!")
action(a)// call to lambda function
}
کد های بالا حروجی تحت را در مرورگر به ارمغان میاورند. با به کار گیری ی کارکرد باطن خطی lambda را تحت عنوان یک پارامتر جابجایی داده ایم. هر کارکرد دیگری با استعمال از کلیدواژه ی “inline” میتواند به کارکرد باطن خطی تبدیل گردد.
Heyyy!!!TutorialsPoint.com
اعلام از دربین غالب
کاتلین خصوصیت های متعددی از دیگر گویش های اپ نویسی داراست. این قضیه به شما این اذن را میدهد که یکسری متغیر را در یک فرصت اعلام نمایید. بدین تکنیک اعلام از در بین پیروز میگویند.
بهدنبال دکورا سیون اول ی اعلام از در میان چیره را میبینید.
val (name, age) = person
در چیدمان بالا، یک هدف ساخته ایم و آحاد آنان را در یک امر تعریفوتمجید کرده ایم. درپی میتوانیم به صورت ذیل از آنها به کارگیری کینم.
println(name)
println(age)
هم اکنون، چه طور میتوانیم از همین در برنامه خویش استعمال کنیم. به نمونه ذیل اعتنا فرمایید که یک طبقه ی شاگرد ساخته ایم با چندین خصوصیت و در پی از آنان به کار گیری میکنیم تا مقدار های غرض را بدست بیاوریم.
Live Demo
fun main(args: Array) {
val s = Student("TutorialsPoint.com","Kotlin")
val (name,subject) = s
println("You are learning "+subject+" from "+name)
}
data class Student( val a :String,val b: String ){
var name:String = a
var subject:String = b
}
کد های بالا خروجی پایین را در مرورگر به اکران میگذارند.
You are learning Kotlin from TutorialsPoint.com
تحقیق به استثناعات
استیناف به استثناعات قسمت مهمی از یک لهجه نرمافزار نویسی میباشد. این تکنیک جلوی برنامه مارا از ساخت و ساز خروجی خطا در رانتایم میگیرد. دراین نصیب، خاطر میگیریم که چطور به یک استثناء رانتایم در کاتلین مطالعه کنیم. استثناعات در کاتلین بسیار مشابه به استثناعات در جاوا میباشد. آحاد استثناعات از طبقه ی “Throwable” میایند. نمونه پایین کیفیت به کارگیری از تکنیک مطالعه به استثناعات در کاتلین را نماد میدهد.
fun main(args: Array)
{
try {
val myVar:Int = ۱۲;
val v:String = "Tutorialspoint.com";
v.toInt();
} catch(e:Exception) {
e.printStackTrace();
} finally {
println("Exception Handeling in Kotlin");
}
}
در کد های بالا، یک ریشه (String) اعلام کرده ایم و بعد آن ریشه را به یک integer چسبانده ایم که در واقعیت یک استثناء رانتایم میباشد. در سود خروجی تحت را در مرورگر میبینیم.
val myVar:Int = 12;
Exception Handeling in Kotlin
نکته : مثل جاوا، کاتلین هم بلوک آخری را پس از اجرای بلوک catch اعمال می نماید.

راهکارهای کاهش CPC در کمپینها