在學習swift的一些筆記(一)

-objective-c與swift打印日志的區別


objective-c中的日志打印代碼:

NSLog(<#NSString *format, ...#>)
NSLog(@"OC 中的日志信息");

第一行代碼是打印的格式,打印方法,打印函數.

第二行代碼是在<#NSString *format, ...#>所輸出的信息,在日志中得到的信息為:OC 中的日志信息.

objective-c中在打印日志里增加參數,打印參數的信息:

NSLog(@"OC 中的日志信息 %d",num);
NSLog(@"%d + %d = %d",one,tow,equalTo);

第一行代碼中的%d是占位符而num是變量的名稱,打印的信息是:OC 中的日志信息num變量中所儲存的值.

第二行代碼打印的是one+tow=equalTo這三個變量的值和符號而不是進行計算.

** swift語言的日志打印代碼:**

println();
println("swift 中的日志信息");

第一行代碼是swift的打印函數.
第二行為打印的具體內容輸出日志信息為:(swift 中的日志信息).

swift中在打印日志里增加參數,打印參數的信息:

println("呵呵",num,"哈哈");
println("a的值為",a,"b的值為",b);

第一行代碼中bum為變量的名稱,與OC中不同的是不再需要占位符而是直接用,號隔開就可以打印,打印結果為:(呵呵,num的值,哈哈).

第二行代碼a,b都是變量,打印的值為 (a的值為,a變量的值,b的值為,b變量的值).

- objective-c與swift變量與常量


** 在objective-c中的常量:**

NSString * const name = @"jack";

這行代碼代表著一個名叫name的常量 指向了一個內存區域儲存了一個字符串jack,并且這個指向的區域不可以改變,也就是說無法在賦值新的字段給這個常量了.

** 在objective-c中的變量:**

NSString * name = @"jack"
name = @"Anthony"

第一行代碼代表著一個名叫name的變量,指向了一個內存區域儲存了一個字符串jack.
在第二行代碼中將一個新的字段Anthony的坐標賦值給了name,這樣變量name所儲存的值發生了改變,并且在聲明objective-c的變量與常量中必須指定數據類型.

** 在swift中的常量:**

let b = 2;

常量在聲明的時候必須賦值 并且只能賦值一次,常量賦值時要用 let 做前綴.

在swift中的變量:

var b;

變量在聲明的時候可以不賦值,并且可以賦值覆蓋多次,swift不管是常量還是變量在聲明的時候可以不指定數據類型,編輯器會自動補上.

在swift中數據類型的聲明:

var b:Double = 66.66;

數據常量變量類型 變量名稱 :數據類型 = 值;
var = 變量,常量的修飾符
b = 變量名稱;
: = 指定數據類型的修飾符
Double = 數據類型
“=” = 賦值符
66.66 = 值;
以上就是一個變量并且指定聲明數據類型的格式;

- objective-c與swift的判斷與循環


在objective-c中if與else的使用:

objective-c是一門弱語法,在使用if與else中我們可以寫出以下代碼:

  • 1
NSString *str = @"jack";
if(str){
    str = @"杰克"; 
}
  • 2
int a =3;
int b =3;
if(a-b){
  a = 4;
}

在第一個代碼中我們首先創建了一個字符串并把字符串放進if的判斷語句中,這時if判斷對象不為nil,判斷條件成功,執行if代碼塊中的語句.

在第二個代碼中,設置了2個變量,在if的判斷語句中做減法,在基本數據類型中,如果在if判斷語句的結果不為0就都為真,如果是0就為假,所以第二個代碼段中的if語句不執行

在swift中if與else的使用:

var a =3;
var b =3;
if(a == b){
  a = 4;
}

在swift中if( )中所填寫的代碼必須是一個布爾表達式,不可以和objective-c那樣放一個變量看是否為0或是否為nil

在objective-c中switch,case,default的使用:

 
    int i = 0;
    switch (i) {
        case 1:{
            int b = 3;
        }
        break;
        default:
        NSLog(@"沒執行");
        break;
    }

在objective-c中switch是可以使用整數型和枚舉型來進行流程分支的控制當獲得匹配的case值時,執行case后的代碼段,要注意的是如果case代碼段后面沒有break那么case會繼續執行下去,直到遇到break,default可以不寫,需要注意的是如果在swich的case代碼中定義變量那么要加{}來將代碼擴起來.

在swift中switch,case,default的使用:

 let name = "jack"
    
    switch name {
        
    case "jack":
        let print = "hehe";
        println(print);
    case "David":
        let print  = "heihei";
        println(print);
    default:
        let print  = " houhou";
        println(print);
        
    }

在swift中switch要比objective-c能夠使用更多的數據類型來進行流程控制,并且在case中不需要在加入break如果執行一個case會自動的彈出不會執行其他的情況,在case中可以直接定義變量,在swift中如果case不能包含所有可發生的情況就必須有default.

fallthrough 貫穿 where

fallthrough 在case最后加等價于以前的OC不寫break
where 在case后 可以做額外的條件判斷

在objective-c中for循環的使用:

 for (int i = 0 ; i <3 ; i++) {
    NSLog(@"%d,",i);
}
for (NSString * str in arr) {
    NSLog(@"%@",str);
}

在objective-c中的2種循環:

第一種種先執行第一個表達式,然后執行括號中的代碼,在執行第二個表達式,根據真假,如果是真就執行第三個表達式,然后繼續繼續執行代碼,如果為假的情況下跳出循環.

第二種,將arr中的所有元素挨個賦值給str 并執行代碼段.

在swift中for循環的使用:

for var index = 0 ; index < 7 ; ++index{
   println("傳統for \(index)");
}

與傳統的objective-c區別不大唯一變化的是var聲明方式,和 ()可以省略

for index in 1...3{
    println(index);
}

將 1...3 包含3的數字 依次賦值給index 每賦值一次執行一次代碼段

在objective-c中while,do...while的使用:

while (YES) {
       
}
do{
    
}while(YES);

objective-c中和其他語言沒有太大的區別,while是先判斷{}內的表達式,然后執行代碼段,而do...while是先執行依次代碼段在判斷表達式.

swift中while,do...while的使用::

 var i = 0;
        
 while i < 7{
            
     i+=1
 }
        
 do{
     i-=1;
 }while i < 0 ;

swift中while,do...while與objective-c基本沒什么區別.

2.0 將do - while改版



repeat{
   print("循環")
}while(true);

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容