語法糖 (Syntactic Sugar) 有點像是「炫技」的概念,把淺顯易懂的東西包裝成複雜華麗的樣貌,藉此吸引人的眼光。或是說,隱藏物件複雜的內容,僅顯露簡單的表面,然後大家都能輕易使用。😎

寫程式的過程中,時常會需要寫判斷 IF ELSE,如果每次都要打這六個字,有時候真的會很煩~
那麼該怎麼簡化此寫法,於是我便常用:
expression ? option1 : option2
現在只要兩個符號?和:,即可搞定兩種判斷。不過簡化也需要看狀況,以免未來看到還要花時間去推敲理解。
語法糖(Syntactic sugar),也譯為糖衣語法,是由英國計算機科學家彼得·約翰·蘭達(Peter J. Landin)發明的一個術語,指計算機語言中加入的某種語法,這種語法對語言的功能並沒有影響,但是更方便程式設計師使用。通常來說,使用語法糖能夠增加程式的可讀性,進而減少程式出錯的機會。
- 對於機器語言,任何比它高級的語言都是語法糖,比如彙編語言,高級語言。
- 對於彙編語言,任何比它高級的語言都是語法糖,比如高級語言。
- 對於高級語言,物件導向的語言都是語法糖。
- 對於物件導向的語言,人類語言都是語法糖。
比如:
y+=1 是 y=y+1 的語法糖
y+=x 是 y=y+x 的語法糖
—
一個例子是C語言中的for迴圈:
for (i = 0; i < 10; i++) {
// P
}
.
其效果在不考慮 for 迴圈中的 continue 語句時,和以下的 while 迴圈是一樣的,其中 P 是迴圈要處理的主體。
i = 0;
while (i < 10) {
// P
i++;
}
.
—
2012 年開始寫 iOS App 是用 Objective C 程式語言,坦白說初學時挺痛苦,後來改用語法糖後,就寫得比較輕鬆愉快~
OC 語法糖
@[] 和 @{}
比如 OC 取得陣列元素:
id element = [array1 objectAtIndex:0];
.
OC 語法糖:你看,我寫起來多方便?
id element = array1[0];
.
又例如字典的初始化:
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"value1", @"key1", @"value2", @"key2", nil];
id value = [dictionary objectForKey:@"key1"];
NSLog(@"key1 => %@", value);
.
我們能這樣簡化:
NSDictionary *dictionary = @{
@"key0" : @"value0",
@"key1" : @"value1",
@"key2" : @"value2"
};
NSLog(@"key2 => %@", dictionary[@"key2"]);
—
因為我現在主要開發 Flutter App,舉一個例子:
Dart 中可透過 async/await 或者 Future 定義異步操作,而事實上 async/await 也只是語法糖,最終還是透過編譯器轉為 Future。
—
甚至,「定義」和「實作」的關係,我只要拿定義來實現商業邏輯功能,是不需要考慮它裡頭怎麼實作⋯⋯
此時,對實作而言,定義就是語法糖。
實際舉排序為例,我不用管它是
- 選擇排序法(Selection Sort)
- 氣泡排序法(Bubble Sort)
- 插入排序法(Insertion Sort)
- 謝爾排序法(Shell Sort)
- 合併排序(Merge Sort)
- 堆積排序(Heap Sort)
- 基數排序(Radix Sort)
- 快速排序法(Quick Sort)
反正只要能達到我的目的,不管用什麼方式做到都行~
總之,不用拘泥語法糖定義,能開心方便寫程式做研發,是最重要的。😀
我喜愛「語法糖式開發」,因為較為接近生活應用,可以很快完成一支 App,這是我認為寫程式最有成就感之處。🤠
參考:
隨意留個言吧:)~