迅捷4 Fonksiyonlar veDeğişkenler#8

Bildirimİşlemi

Birdeğişkeninkullanılmadanöncederleyiciyetanıtılmasıişleminebildirim(宣言)denilmektedir。 使用C,C ++,Java和C#编写的代码,可以快速处理dekiıkenlerkullanılmadanöncebildirilmekzorundadır。

Bildirimişleminin类别biçimikabacaşöyledir:

  var : [,...]; 
var = [,...]
var : = [,...]
让: = <ilkdeğer[,...]
让 = ,[,...]

Örneğin:

  var a = 100,b = 200; 打印(a) 
 打印(b) 

Örneğin:

  var a:Int = 100,b:Double = 200; 打印(a) 
 打印(b) 

Örneğin:

  var a = 100,b:Double = 10.2; 打印(a) 
 打印(b) 

Örneğin:

  var a:整数; b:双精度;  a = 10; 
  b = 20.3; 
 打印(a) 
打印(b)

Görüldüğüvar ile bildirimyapılırkendeğişkenisminden sonratürbelirtilmiyorsailkdeğerverme zorunludur。 Çünküdeğişkenintürübu durumda ancakilkdeğerifadesindençıkarsanabilmektedir。 Fakatdeğişkenisminden sonratürbelirtilirse bu durumdailkdeğerverme zorunlu olmaz。 让ileyapılanbildirimlerdetürbelirtilse胆汁ilkdeğerverme zorunludur。

Örneğin:

 令x:整数;  //错误x = 10; 

Ebiler bildirimdedeğişkenintürübelirtilmemişseverilenilkdeğerdentürtespitiyapılır。 VerilénIlkdeğernoktaiçeriyorsatürDouble olarak,IçermiyorsaInt olarak belirlenmektedir。

Örneğin:

  var a = 100,b = 12.2; 

Burada a Inttürdenb ise Doubletürdendir。 İkitırnaklailkdeğerverme durumundatürString olarak belirlenir。

Örneğin:

  var s =“ ankara”;  // s Stringtüründen 

斯威夫特角色türüde ikitırnakla(塔比ikitırnakiçerisindetek bir karakterbulunmalı)ifade edilmektedir。 Ancak ikitırnakifadeleri otomatik olarak字符串türüolarak tespit edilirler。

Örneğin:

  var x =“ a” // x字符türündendeğil字符串türünden 

Tabi bildirimsırasındadeğişkenintürübelirtilerek ikitırnakifadesinin字符biçimindeelealınmasısağlanabilir。

Örneğin:

  var ch:Character =“ a” // ch Charactertüründen 

Ya daaynıişlemşöyledeyapılabilirdi:

  var ch = Character(“ a”)// ch Charactertüründen 

真的是假的olabilecek BooltürdenilkdeğerleriçindeğişkenintürüBool olarak belirlenir。

Örneğin:

  var a = 33 == 34;  //布尔图登 

Değişkenlet ile bildirilirse const hale gelir。 Dolayısıylabudeğişkenebir dahadeğeratayamayız。

Örneğin:

 设a = 100 
a = 200 //错误!

Anahtar Notlar:打印fonksiyonunda parametrikyazımiçin\(değişkenismi)kalıbıkullanılmaktadır。 您可以通过\\\\\\\\“我的名字\”和“我的名字”。

Örneğin:

  var a = 10;  print(“ a = \(a)”) 

Örneğin:

  var a:Int = 10,b:Double = 10.5;  print(“ a = \(a),b = \(b)”) 

丰西永·比迪里米利

Swift‘te fonksiyonlar C#和Java’daolduğugibi birsınıfıniçerisindebulunmak zorundadeğildir。 BubakımdanSwift C ++’abenzetilmiştir。 BöyleceSwift’te istersek bizhiçsınıfkullanmadanyalnızcafonksiyonlarlaprosedürelteknikte kod yazabiliriz。

Swift’te fonksiyon bildiriminin通用Biçimişöyledir:

func ([[parametre bildirimi])[-> ] {

// …}

Örneğin:

  func add(a:Int,b:Int)-> Int { 
 返回a + b 
}
  var x = add(10,b:20); 打印(x) 

Örneğin:

  func foo(){ 
  print(“ foo”)} 
  foo() 

您可以在parametezinin参数表中找到du du fonksiyonun parametreye saipolmadığıanlamınagelir。 您可以在参数表中找到声音->并在duk da fonksiyonun geridönüşdeğerininolmadığıanlamınagelmektedir。 Fonksiyonun tek bir geridönüşdeğerivardır。 Ancak birden fazladeğergeridöndürmeninçeşitliyolları(örneğintuple)bulunmaktadır。

返回deyimi hem fonksiyonusonlandırmakiçinhem de geridönüşdeğerinioluşturmakiçinkullanılır。 返回deyiminin类别biçimişöyledir:

 返回[ifade] [;] 
  func add(a:Double,b:Double,c:Double)-> Double { 
 返回a + b + c 
  } 
var结果= add(100,b:200,c:300)
 打印(结果) 

Eğerfonksiyonun geridönüşdeğeriyoksa返回kullanılabilir; ancakyanınabir ifadeyazılamaz。

Geridönüşdeğeriolmayan bir fonksiyonda biz返回kullanmak zorundadeğiliz。 Zatenakışfonksiyonun sonunageldiğindefonksiyonsonlanacaktır。 Ancak geridönüşdeğerimevcut olan bir fonksiyonda返回kullanılmakzorundadır。 Fonksiyonunakışıonun hermümkünakışıiçin返回deyiminigörmesigerekir。

Örneğin:
Fonksiyon parametre bildiriminde parametrenintürlerikesinlikle belirtilmekzorundadır。 Örneğin:

  func foo(var a)//错误!  { 
  // ...} 

Parametredeğişkenbildiriminde var ya da let anahtarsözcüklerikullanılabilir。 Bunlarınkullanılmadığıdurumda默认olarak sanki让kullanılmışgibiişlemgörür。 var anahtarsözcüğüparametredeğişkenininfonksiyoniçerisindedeğiştirilebileceğini,让isedeğiştirilemeyeceğinibelirtir。 默认的olarak parametredeğişkenleri让durumdadıryani fonksiyoniçerisindeonlarındeğerlerideğiştirilemez。 (C,C ++,Java ve C#是默认的olarak biz参数değişkenlerinindeğerleriniistersekdeğiştirebiliriz。)

FonksiyonlarınÇağrılması

Bir fonksiyonçağrılırkenparametredeğişkenisayısıkadarargümangirilmekzorundadır。 Argümanlaraynıtürdenherhangi bir ifade olabilirler。 Parametrelerin birer yerel ismi(本地名称)和dışsalismi(外部名称)bulunur。 Fonksiyonçağrılırkenargümandaetiket(标签)olarakdışsalisim belirtilmekzorundadır。 Dışsalisimler fonksiyon parametre bildiriminde yerel isimlerin solunda belirtilirler。 Örneğin:

  func foo(width w:Double,height h:Double)-> Double { 
 返回w * h} 
  var result = foo(width:10,height:200); 打印(结果) 

Görüldüğügibi fonksiyonçağrılırkendışsalisimler etiket olarak belirtilmekzorundadır。 Fonksiyonçäğırmasırasındaargümanoluşturma我的属类biçimişöyledir:

[dışsalisim etiketi] [:]

Dışsalisim yerine’_’karakterikullanılırsabu durumdaçağırmasırasındadışsalisim etiketi bulundurulmaz。 Örneğin:

  func foo(width w:Double,_ h:Double)-> Double { 
 返回w * h;  } 
  var result = foo(width:10,200); 打印(结果) 

Fonksiyonlarınbirinci parametrelerinde默认为olarak’_’belirlemesiyapılmışgibidir。 Yani biz birinci parametreyedışsalisim vermezsek bununiçinargümandaetiketlemeyapmamalıyız。 Örneğin:

  func foo(w:Double,height h:Double)-> Double { 
 返回w * h; 
  } 

Bu bildirimşununlaeşdeğerdir:

  func foo(_ w:Double,height h:Double)-> Double { 
 返回w * h;  } 

Fonksiyonun的照片:

  var result = foo(10,height:200)print(result) 
  // birinciargümandaetiketlemeyapamayız 

Efoner fonksiyonun birinci parametresinedışsalisimverilmişseartıkçağırırkenbunun etiketlendirilmesi gerekir。 Örneğin:

  func foo(width w:Double,height h:Double)-> Double { 
 返回w * h;  } 
  var result = foo(10,height:200)//错误!  Birinciargümandaetiketleme yapmakzorundayız 
打印(结果)

Anahtar Notlar: İstisnaolarakSınıflarınbaşlangıçmetotlarının(initmetotlarının)birinci parametresi’_’biçimindedeğildir。 initmetotlarınıçağırırkenilkargümanda etiketlendirmekzorundadır。 Sınıflarilerideayrıntılarıylaelealınacaktır。

Fonksiyon bildirimisırasındaparametredeğişkenlerinedışsalisimhiçverilmeyebilir。 Bu durumda yerel isimaynızamandadışsalisim olarakkullanılır。 Örneğin:

  func foo(w:Double,h:Double)-> Double { 
 返回w * h;  } 
  var result = foo(10,h:200); 打印(结果) 

Burada yine birinci parametreiçindışsalisim olarak’_’belirleyicisikullanılmıştır。 Ancak ikinci parametrededışsalisimkullanılmadığıiçinyerel isimaynızamandadışsalisim olarak elealınmaktadır。

Swift’te Fonksiyon重载İşlemleri

Bilindiğigibi programlama dillerindeaynıisimli fonksiyon bulunabilmeözelliğine“函数重载” ya da“方法重载” denilmektedir。 “过载”“aşırıyükleme”anlamınageldiğiiçinTürkçekaynaklarınbirbölümündeböyleifade edilmektedir。

Swift’teaynıisimli fonksiyonlar赚钱了。 Ancakonlarınarasındaaşağıdakifarklılıklarınbiri ya da birdenfazlasınınolmasıgerekir:

–参数化说法尔马尔奇–参数化化图尔林因法尔奇
–Dışsalisimlerinfarklılığı
– Geridönüşdeğerininfarklılığı

Örneğin:

  func foo(a:Int){ 
打印(“ foo1”)
}
  func foo(b:Int){ 
print(“ foo2”)
}

Buradayukarıdabelirtilenfarklılıklarınhiçbirisözkonusudeğildir。 İkifoo fonksiyonunun dadışsalisimleriaynıdır(她的ikisinde _biçimindedir)。 Örneğin:

 导入Swift 
  func foo(xa:Int){ 
  print(“ foo 1”) 
}
  func foo(yb:Int){ 
  print(“ foo 2”) 
}
  foo(x:10)// foo 1 
foo(y:20)// foo 2

Yukarıdakiiki foo’nun parametredeğişkenlerinindışsalisimlerifarklıdır。 Örneğin:

  func foo(xa:Int){ 
  print(“ foo 1”) 
}
  func foo(xb:Double){ 
  print(“ foo 2”) 
}
  var结果:Int 
foo(x:10)
富(x:20.4)
// foo 1
// foo 2

Fonksiyon Parametrelerinin默认DeğerAlmasıDurumu

默认的argümanC ++’taötedenberivardı。 C#’a Microsoft语言规范3.0 versiyonuylasokulmuştur。 BuözellikSwift’te deaktarılmıştır。

Fonksiyon bildiriminde parametredeğişkeninedeğeratanırsabiz o fonksiyonuçağırırkenon akarşıgelenargümanıhiçgirmeyebiliriz。 Bu durumda sanki oargümaniçinilkdeğerolarakatanmışdeğergirilmişgibiişlemsözkonusu olur。

Örneğin:

func foo(a:Int,b:Int = 100){

print(“ a = \(a),b = \(b)”)}

foo(10,b:20)
foo(10)// foo(10,b:100)

Buradaki foo她的zaman iki parametrelidir。 Ve她的zamançağırmasırasındaiki参数aktarımıyapılır。 默认为argümanyalnızcagösterimikolaylaştırmaktadır。 Örneğin:

  func foo(a:Int = 100,b:Int = 200){ 
  print(“ a = \(a),b = \(b)”) 
  } 
  foo(a:10,b:20) 
// foo(a:10,b:20)
foo(a:10)
// foo(a:10,b:200)
foo()
// foo(a:100,b:200)

默认的默认参数是默认的默认参数。默认的默认参数是:默认的默认参数。 Örneğin:

  func printError(message msg:String =“ Ok”){ 
  print(“错误:\(msg)”)} 
  printError(消息:“无效名称”) 
printError()

默认argümanlıfonksiyonlar Swift’in standartkütüphanesindedekarşımızaçıkmaktadır。 Örneğinaslında打印fonksiyonu da终结者dışsalisimli bir parametreye sahiptir。 Bu parametrenin默认为“ \ n”biçimdedir。 Bu parametreyazdırmaişlemindensonra ekstra olarak kangi karakterlerin ekranabasılacağınıbelirtir。 Başkabirdeyişle:

打印(a)

ile

打印(a,终止符:“ \ n”)

eşdeğerişlemeyçaçar。

Örneğin:

  var a = 10,b = 20 print(a,终止符:“”)print(b) 

默认argümanasahip fonksiyonlaraynıisimli daha az parametreye sahip fonksiyonlar edilebilir超载。 Fakatbunlarınçağrılmasısırasındaikianlamlılık(歧义)oluşabilir。 Örneğin:

  func foo(a:Int = 100,b:Int = 200){ 
  print(“ a = \(a),b = \(b)”) 
}
  func foo(){ 
 打印(“无效”) 
}
  foo()// hangi foo吗? 

C ++ ve C#’ta fonksiyonun bir parametresi defaultdeğeralmışsaonunsağındakilerinhepsinin defaultdeğer

almasızorunludur。 Swift’tedışsalisimler nedeniyleböylebir zorunluluk yoktur。 Örneğin:

  func foo(a:Int = 100,b:Int){ 
  print(“ a = \(a),b = \(b)”) 
  } 
  foo(b:200)// foo(100,200) 

保留默认设置,默认设置为默认设置,默认设置为默认设置,默认设置为默认设置

olmasıgerekir。 Aksi taktirde kodu inceleyenkişileryanlışizlenimlerekapılabilirler。

İçeFonksiyon Bildirimleri

Cdürdedillerdeiçiçefonksiyonlar bildirilemez。 她的名字diğerinindışındabildirilmekzorundadır。 Fakat(Pascal gibibazıdillerdeötedenberiiçiçefonksiyon bildirimi zatenvardır)Swift’te bir fonksiyonuniçerisindebaşkabir fonksiyon bildirilebilir。 Örneğin:

  func foo(){ 
  bar()//yanlış 
  func bar(){ 
  // ... 
  } 
  bar()//doğru 
  } 
  //geçerli 

İçerdebildirilmişfonksiyon ancakiçindebildirildiğifonksiyontarafındançağrılabilir。 Yaniyukarıdakiörnektebar fonksiyonuyalnızcafoo fonksiyonutarafındançağrılır。

来看看fonksiyonun herhangi bir yerinde bildirilebilir。 Ancakbildirildiğiyerönemlidir。 密码:土耳其语kendi bildirimine kadar olanbölgede(yani kendisinden dahayukarısında)bildirilmişolandışfonksiyonun yereldeğişkenlerini。

Örneğin:

  func foo(){ 
  var x = 10 
  func bar(){ 
  x = 20 
}
 打印(x) 
}
  foo()// 10 

Buörnektebar fonksiyonu foo fonksiyonununiçerisindebildirilmiştirfakatçağrılmamıştır。 Tabi foo fonksiyonu bar()çağıracaksaancak bildiriminden sonraçağırabilir。 Örneğin:

  func foo(){ 
  var x = 10 
  func bar(){ 
  x = 20} 
酒吧()
打印(x)
}
  foo()// 20