تولید کننده ها در کاتلین
تولید کننده Kotlin یک تابع عضو ویژه در یک کلاس میباشد که هنگام مثال سازی یک شی فراخوانی طراحی اپلیکیشن در مشهد میشود.
هر فرصت که یک آبجکت ساختوساز میگردد، آفریننده تمجید گردیده به صورت خود کار فراخوانی میگردد که برای مقداردهی اول properties کلاس به کارگیری میگردد.
هر کلاس Kotlin نیاز به یک خالق داراست و درصورتی که آن را تعریف و تمجید نکنیم، کامپایلر یک تولید کننده پیش فرض تولید می نماید.
یک کلاس Kotlin میتواند دو نوع خالق تحت داشته باشد:
Primary Constructor
Second Constructors
یک کلاس Kotlin میتواند یک Primary Constructor و یک یا این که چندین Second Constructors مازاد داشته باشد.
تولید کننده نخستین Kotlin کلاس را مقداردهی اول می نماید، در حالی که Second Constructors به گنجاندن logic مازاد در هنگام مقداردهی اول کلاس یاری می نماید.
Primary Constructor
primary constructor (خالق اول) را می قدرت در class header level همان طور که در نمونه ذیل نشانه داده گردیده است اعلان کرد.
class Person constructor(val firstName: String, val age: Int) {
// class body
}
COPY
درصورتی که که هیچ access modifiers مانند public ، private یا این که protected معین نشده باشد، می قدرت واژه کلیدی constructor را حذف کرد.
درین نمونه، properties را از روش واژه کلیدی val اعلام کرده ایم تا آن ها را تنها خواندنی کنیم.
این properties را می قدرت با استعمال از کلمه و واژه کلیدی var تعریفوتمجید کرد در صورتیکه بخواهید مقادیر آنهارا در طول آتی تغییر و تحول دهید.
Initializer Block
primary constructor نمی تواند دربردارنده هیچ کدی باشد.
Initialization code را میقدرت در initializer blocks با پیشوند کلیدواژه init قرار بخشید.
ممکن میباشد بیشتراز یک initializer blocks وجود داشته باشد و در حین مقداردهی نخستین یک مثال، initializer blocks به به عبارتی ترتیبی که در بادی کلاس ظواهر می گردند، انجام میشوند و با مقداردهی property initializers در هم می آمیزند :
در ذیل مثالی با به کارگیری از initializer blocks نقل شده میباشد :
class Person (val _name: String, val _age: Int) {
// Member Variables
var name: String
var age: Int
// Initializer Block
init {
this.name = _name
this.age = _age
println("Name = $name")
println("Age = $age")
}
}
fun main(args: Array) {
val person = Person("mehrsa", 23)
}
COPY
خروجی :
Name = mehrsa
Age = 23
مقادیر پیشفرض
Kotlin اذن میدهد تا پارامترهای تولیدکننده را با مقادیر پیش فرض مقداردهی اول فرمایید.
در پایین یک نمونه عمل برای همین میباشد:
class Person (val _name: String, val _age: Int=20) {
// Member Variables
var name: String
var age: Int
// Initializer Block
init {
this.name = _name
this.age = _age
println("Name = $name")
println("Age = $age")
}
}
fun main(args: Array) {
val zara = Person("Zara")
val nuha = Person("Nuha", 11)
}
COPY
خروجی :
Name = Zara
Age = 20
Name = Nuha
Age = 11
Secondary Constructor
همانگونه که پیش از این بیان شد، کاتلین اذن میدهد تا یک یا این که یکسری Secondary Constructor برای کلاس خویش ساخت و ساز نمایید.
این Secondary Constructor با استعمال از کلمه و واژه کلیدی Constructor ساخت و ساز می گردد.
هر مجال که بخواهید بیشتراز یک خالق در کاتلین ساخت نمایید یا این که هر فرصت که بخواهید منطق بیشتری را در آفریننده اساسی بگنجانید ؛ نمی توانید این عمل را ایفا دهید چون تولیدکننده اول ممکن میباشد بوسیله کلاس دیگری فراخوانی گردد.
به نمونه تحت نگاهی بیندازید، در اینجا ما یک Secondary Constructor برای طراحی نمونه بالا تولید کرده ایم:
class Person{
// Member Variables
var name: String
var age: Int
// Initializer Block
init {
println("Initializer Block")
}
// Secondary Constructor
constructor ( _name: String, _age: Int) {
this.name = _name
this.age = _age
println("Name = $name")
println("Age = $age")
}
}
fun main(args: Array) {
val zara = Person("Zara", 20)
}
COPY
خروجی :
Initializer Block
Name = Zara
Age = 20
Secondary Constructor اذن به کارگیری از val یا این که var را با پارامترهای Secondary Constructor نمی دهد.
اکنون بیایید یک نمونه را با دو Secondary Constructor ببینیم:
class Person{
// Member Variables
var name: String
var age: Int
var salary:Double
// First Secondary Constructor
constructor ( _name: String, _age: Int) {
this.name = _name
this.age = _age
this.salary = 0.00
println("Name = $name")
println("Age = $age")
}
// Second Secondary Constructor
constructor ( _name: String, _age: Int, _salary: Double) {
this.name = _name
this.age = _age
this.salary = _salary
println("Name = $name")
println("Age = $age")
println("Salary = $salary")
}
}
fun main(args: Array) {
val nuha = Person("Nuha", 12)
val zara = Person("Zara", 20, 2000.00)
}
COPY
خروجی :
Name = Nuha
Age = 12
Name = Zara
Age = 20
Salary = 2000.0
تولید کننده ها در کاتلین
تولید کننده Kotlin یک تابع عضو ویژه در یک کلاس میباشد که هنگام مثال سازی یک شی فراخوانی طراحی اپلیکیشن در مشهد میشود.
هر فرصت که یک آبجکت ساختوساز میگردد، آفریننده تمجید گردیده به صورت خود کار فراخوانی میگردد که برای مقداردهی اول properties کلاس به کارگیری میگردد.
هر کلاس Kotlin نیاز به یک خالق داراست و درصورتی که آن را تعریف و تمجید نکنیم، کامپایلر یک تولید کننده پیش فرض تولید می نماید.
یک کلاس Kotlin میتواند دو نوع خالق تحت داشته باشد:
Primary Constructor
Second Constructors
یک کلاس Kotlin میتواند یک Primary Constructor و یک یا این که چندین Second Constructors مازاد داشته باشد.
تولید کننده نخستین Kotlin کلاس را مقداردهی اول می نماید، در حالی که Second Constructors به گنجاندن logic مازاد در هنگام مقداردهی اول کلاس یاری می نماید.
Primary Constructor
primary constructor (خالق اول) را می قدرت در class header level همان طور که در نمونه ذیل نشانه داده گردیده است اعلان کرد.
class Person constructor(val firstName: String, val age: Int) {
// class body
}
COPY
درصورتی که که هیچ access modifiers مانند public ، private یا این که protected معین نشده باشد، می قدرت واژه کلیدی constructor را حذف کرد.
درین نمونه، properties را از روش واژه کلیدی val اعلام کرده ایم تا آن ها را تنها خواندنی کنیم.
این properties را می قدرت با استعمال از کلمه و واژه کلیدی var تعریفوتمجید کرد در صورتیکه بخواهید مقادیر آنهارا در طول آتی تغییر و تحول دهید.
Initializer Block
primary constructor نمی تواند دربردارنده هیچ کدی باشد.
Initialization code را میقدرت در initializer blocks با پیشوند کلیدواژه init قرار بخشید.
ممکن میباشد بیشتراز یک initializer blocks وجود داشته باشد و در حین مقداردهی نخستین یک مثال، initializer blocks به به عبارتی ترتیبی که در بادی کلاس ظواهر می گردند، انجام میشوند و با مقداردهی property initializers در هم می آمیزند :
در ذیل مثالی با به کارگیری از initializer blocks نقل شده میباشد :
class Person (val _name: String, val _age: Int) {
// Member Variables
var name: String
var age: Int
// Initializer Block
init {
this.name = _name
this.age = _age
println("Name = $name")
println("Age = $age")
}
}
fun main(args: Array) {
val person = Person("mehrsa", 23)
}
COPY
خروجی :
Name = mehrsa
Age = 23
مقادیر پیشفرض
Kotlin اذن میدهد تا پارامترهای تولیدکننده را با مقادیر پیش فرض مقداردهی اول فرمایید.
در پایین یک نمونه عمل برای همین میباشد:
class Person (val _name: String, val _age: Int=20) {
// Member Variables
var name: String
var age: Int
// Initializer Block
init {
this.name = _name
this.age = _age
println("Name = $name")
println("Age = $age")
}
}
fun main(args: Array) {
val zara = Person("Zara")
val nuha = Person("Nuha", 11)
}
COPY
خروجی :
Name = Zara
Age = 20
Name = Nuha
Age = 11
Secondary Constructor
همانگونه که پیش از این بیان شد، کاتلین اذن میدهد تا یک یا این که یکسری Secondary Constructor برای کلاس خویش ساخت و ساز نمایید.
این Secondary Constructor با استعمال از کلمه و واژه کلیدی Constructor ساخت و ساز می گردد.
هر مجال که بخواهید بیشتراز یک خالق در کاتلین ساخت نمایید یا این که هر فرصت که بخواهید منطق بیشتری را در آفریننده اساسی بگنجانید ؛ نمی توانید این عمل را ایفا دهید چون تولیدکننده اول ممکن میباشد بوسیله کلاس دیگری فراخوانی گردد.
به نمونه تحت نگاهی بیندازید، در اینجا ما یک Secondary Constructor برای طراحی نمونه بالا تولید کرده ایم:
class Person{
// Member Variables
var name: String
var age: Int
// Initializer Block
init {
println("Initializer Block")
}
// Secondary Constructor
constructor ( _name: String, _age: Int) {
this.name = _name
this.age = _age
println("Name = $name")
println("Age = $age")
}
}
fun main(args: Array) {
val zara = Person("Zara", 20)
}
COPY
خروجی :
Initializer Block
Name = Zara
Age = 20
Secondary Constructor اذن به کارگیری از val یا این که var را با پارامترهای Secondary Constructor نمی دهد.
اکنون بیایید یک نمونه را با دو Secondary Constructor ببینیم:
class Person{
// Member Variables
var name: String
var age: Int
var salary:Double
// First Secondary Constructor
constructor ( _name: String, _age: Int) {
this.name = _name
this.age = _age
this.salary = 0.00
println("Name = $name")
println("Age = $age")
}
// Second Secondary Constructor
constructor ( _name: String, _age: Int, _salary: Double) {
this.name = _name
this.age = _age
this.salary = _salary
println("Name = $name")
println("Age = $age")
println("Salary = $salary")
}
}
fun main(args: Array) {
val nuha = Person("Nuha", 12)
val zara = Person("Zara", 20, 2000.00)
}
COPY
خروجی :
Name = Nuha
Age = 12
Name = Zara
Age = 20
Salary = 2000.0

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