字面量 陣列 字典

2021-09-11 13:21:33 字數 3881 閱讀 2322

建議使用字面量語法建立陣列和字典。

陣列場景一:

nsnumber *num1 = @1;

nsnumber *num2 = @2;

nsnumber *num3;

nsnumber *num4 = @4;

nsnumber *num5 = @5;

nsarray *array1 = [nsarray arraywithobjects:num1, num2, num3, num4, num5, nil];

// nsarray *array2 = @[num1, num2, num3, num4, num5];

nslog(@"---array1: %@", array1);

// nslog(@"---array2: %@", array2);

// nslog(@"---%@", array1[3]);

// nslog(@"---%@", [array1 objectatindex:3]);

複製**

列印結果:

---array1: (1,2

)複製**

即:arraywithobjects:這種方式建立陣列,當遇到值為nil時,陣列停止建立,且不會報錯,實際使用時,你可能不小心使得想要加入到陣列的某個值為空了,結果得到的陣列並不是你想要的,甚至你若不知道此方法遇到nil會停止建立,造成迷惑

陣列場景二:

nsnumber *num1 = @1;

nsnumber *num2 = @2;

nsnumber *num3;

nsnumber *num4 = @4;

nsnumber *num5 = @5;

nsarray *array1 = [nsarray arraywithobjects:num1, num2, num3, num4, num5, nil];

// nsarray *array2 = @[num1, num2, num3, num4, num5];

nslog(@"---array1: %@", array1);

// nslog(@"---array2: %@", array2);

nslog(@"---%@", array1[3]);

// nslog(@"---%@", [array1 objectatindex:3]);

複製**

nsnumber *num1 = @1;

nsnumber *num2 = @2;

nsnumber *num3;

nsnumber *num4 = @4;

nsnumber *num5 = @5;

nsarray *array1 = [nsarray arraywithobjects:num1, num2, num3, num4, num5, nil];

// nsarray *array2 = @[num1, num2, num3, num4, num5];

nslog(@"---array1: %@", array1);

// nslog(@"---array2: %@", array2);

// nslog(@"---%@", array1[3]);

nslog(@"---%@", [array1 objectatindex:3]);

複製**

報錯結果:

複製**

即:無論字面量根據下標獲取相應的值還是objectatindex: 只要超出陣列範圍,均會崩潰

陣列場景三:

nsnumber *num1 = @1;

nsnumber *num2 = @2;

nsnumber *num3;

nsnumber *num4 = @4;

nsnumber *num5 = @5;

// nsarray *array1 = [nsarray arraywithobjects:num1, num2, num3, num4, num5, nil];

nsarray *array2 = @[num1, num2, num3, num4, num5];

// nslog(@"---array1: %@", array1);

// nslog(@"---array2: %@", array2);

// nslog(@"---%@", array1[3]);

// nslog(@"---%@", [array1 objectatindex:3]);

複製**

報錯結果:

複製**

即: 使用字面量方式建立陣列時,若遇到為空的值會崩潰,實際建立陣列時,往陣列中新增nil往往意味著錯誤,字面量方式建立陣列往往能較快的發現錯誤所在

字典場景一:

nsstring *testobject;

nsdictionary *dic1 = [nsdictionary dictionarywithobjectsandkeys:@"hh", @"firstname", @"cc", @"lastname", testobject, @"hi", @"bb", @"hello", nil];

// nsdictionary *dic2 = @;

nslog(@"---dic1: %@", dic1);

// nslog(@"---dic2: %@", dic2);

nslog(@"--%@", dic1[@"hi"]);

nslog(@"--%@", [dic1 objectforkey:@"hi"]);

nslog(@"--%@", dic1[@"none"]);

nslog(@"--%@", [dic1 objectforkey:@"kkk"]);

複製**

列印結果:

---dic1: 

--(null)

--(null)

--(null)

--(null)

複製**

即: 與陣列類似,dictionarywithobjectsandkeys:方式建立字典時,遇到值為nil時,停止建立且不會報錯;通過key獲取其值,無論字面量獲取還是objectforkey:均不會報錯; 通過key獲取值,即使key為不存在的,仍不會報錯

字典場景二:

nsstring *testobject;

// nsdictionary *dic1 = [nsdictionary dictionarywithobjectsandkeys:@"hh", @"firstname", @"cc", @"lastname", testobject, @"hi", @"bb", @"hello", nil];

nsdictionary *dic2 = @;

複製**

報錯結果:

複製**

即:使用字面量方式建立字典時,遇到值為空時,會造成崩潰,這樣更容易發現**邏輯的錯誤

因此,建議多使用字面量方式(快速建立)建立陣列、字典以及nsnumber等

字面量和整數字面量

字面量是指c c 源 中直接使用的常量,字面量的意思是 一眼看上去是什麼就是什麼 例如語句 int x 10 中10就是字面量,它相對於變數,只有乙個確定的值不能改變,這個值就是它看上去的值。c c 中的字面量有一下幾種 1.0和正整數,如10 123等 負整數不是字面量,因為加了 運算子 2.浮點...

Go字面量(字面常量)

目錄 字面量字面量型別 整型字面量 浮點型字面量 複數型別字面量 字元型字面量 字串字面量 程式語言源程式中表示固定值的符號叫做字面量,也稱字面常量。一般使用裸字串行來表示不同型別的值。字面量可以被程式語言編譯器直接轉換為某個型別的值。go的字面量可以出現在兩個地方 一是用於常量和變數的初始化,二是...

資料表示字面量整型字面量

編寫程式,首先面對的是資料。在程式中,資料該如何表示出來?根據表示的方式不同,資料通常有兩種表示方式 直觀表示和指代表示。本章將詳細講解這兩種表示方式本文選自明明白白學c 大學霸。在 編寫中,資料往往是可以直接寫到 中的。對於這些資料,人們可以通過字面所表達的意思,獲知其含義,所以它們也被稱為字面量...