經(jīng)常搞不清楚dart命名參數(shù)與位置參數(shù)的區(qū)別?現(xiàn)在我們來對(duì)比一下,位置參數(shù)與命名參數(shù)的區(qū)別。
Dart 有兩種類型的可選參數(shù),分別是命名可選參數(shù)和位置可選參數(shù)。在我討論差異之前,讓我先看看兩者的相似之處。
Dart 可選命名參數(shù)和可選位置參數(shù)在調(diào)用函數(shù)時(shí)不需要為參數(shù)指定值。可選命名參數(shù)和可選位置參數(shù)只能在任何必需參數(shù)之后聲明。
可選命名參數(shù)和可選位置參數(shù)可以有一個(gè)默認(rèn)值,在調(diào)用者沒有指定值時(shí)使用。這就是兩種可選參數(shù)相同點(diǎn)。
不同之處是可選位置參數(shù)使用[ ]
包裹參數(shù)。可選命名參數(shù)使用{ }
包裹參數(shù)。
可選位置參數(shù)
使用[ ]
包裹的參數(shù)是一個(gè)可選位置參數(shù)。例如代碼getHttpUrl(String server,[int port=80]) {}
,port
是可選的,默認(rèn)值為80
。
您可以在調(diào)用getHttpUrl
使用或不使用第三個(gè)參數(shù)。這種方式聲明函數(shù)的好處是使你的代碼更為簡(jiǎn)潔,但缺失可讀性。
例如以下代碼,除非您知道8080和5是什么,否則很難說出那些看似神奇的數(shù)字是什么。您可以使用命名的可選參數(shù)來創(chuàng)建更具可讀性的API。
getHttpUrl(String server,url,String url,[int port=80]) {}
getHttpUrl('example.com', '/index.html', 8080); // port == 8080
getHttpUrl('example.com', '/index.html'); // port == 80
可選命名參數(shù)
使用{ }
包裹的參數(shù)是一個(gè)命名的可選參數(shù)。您可以使用或不使用位置可選參數(shù)。但是當(dāng)你使用位置可選參數(shù)時(shí),你必須使用參數(shù)名稱傳遞參數(shù)。
在命令可選參數(shù)中,你不必按順序傳遞可選的命名參數(shù),因?yàn)槊麉?shù)是按名稱引用,所以它們的使用順序可以不同于它們的聲明順序。
這一點(diǎn)相對(duì)于位置可選參數(shù),更易于閱讀和理解,缺點(diǎn)就是不夠簡(jiǎn)潔。在兩者的選擇取決你個(gè)人需求。
getHttpUrl(String server, String path, {int port = 80}) {
// ...
}
getHttpUrl('example.com', '/index.html', port: 8080); // port == 8080
getHttpUrl('example.com', '/index.html'); // port == 80
結(jié)論
至此,你已經(jīng)了解如何在可選位置參數(shù)和命名可選參數(shù)之間的區(qū)別。可選項(xiàng)位置參數(shù)會(huì)使代碼更為簡(jiǎn)潔,可選命名參數(shù)會(huì)使代碼易于閱讀和理解。
-
參數(shù)
+關(guān)注
關(guān)注
11文章
1859瀏覽量
32427 -
代碼
+關(guān)注
關(guān)注
30文章
4825瀏覽量
69049 -
Dart
+關(guān)注
關(guān)注
0文章
9瀏覽量
1763
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論