1.使用stateless 的 widget 只能用於顯示資訊,不能有其他動作。因此不能顯示dialog等操作,只能使用statefulwidget 。
2.檢測兩個 string 的內容是否一樣事,我們使用 == 進行比較;如果要測試兩個物件是否是同乙個物件(indentity test),使用 identical 函式。identical(str, str2)。
3.object 和 dynamic 都使得我們可以接收任意型別的引數,但兩者的區別非常的大。
使用 object 時,我們只是在說接受任意型別,我們需要的是乙個 object。型別系統會保證其型別安全。
使用 dynamic 則是告訴編譯器,我們知道自己在做什麼,不用做型別檢測。當我們呼叫乙個不存在的方法時,會執行 nosuchmethod() 方法,預設情況下(在 object 裡實現)它會丟擲 nosuchmethoderror。
4.dynamic obj = {};
if (obj is map)
// 雖然 dart 也提供了 as 讓我們進行型別的強制轉換,但為了進來更安全
// 的轉換,更推薦使用 is
var map = obj as map;
可選引數
int foo(int x,[int y])
具名引數 呼叫foo(3,y:4)
int foo(int x,)
6.如果想告訴使用者某個具名引數是必須的,可以使用註解 @required
int foo()
7.typedef是給函式進行起別名
typedef adder = int function(int, int);
adder makeadder(int extra) ;
// 如果只有乙個語句,我們可以使用下面這種更為簡潔的形式
// return (int x, int y) => x + y + extra;
}void main()
dart 裡面不僅變數支援型別推斷,lambda 的引數也支援自動推斷。上面的**還可以進一步簡化為:
typedef adder = int function(int, int);
adder makeadder(int extra)
void main()
dart 不支援函式的過載。
8.丟擲異常
丟擲異常:
throw exception(『put your error message here』);
捕獲異常:
try on formatexception catch (e) on exception catch (e) finally
dart 可以丟擲任意型別的物件:
throw 42;
細節開發 1
細節開發是一種輔助性的過程,目標是降低專案中的 rework 和 bug fix 成本.細節開發的目的不是主導專案,而是輔助專案管理,提高 專案的質量.細節開發不是單一的過程,而是反覆迭代的過程.為什麼需要細節開發?有過開發經驗的人都有這種體會,專案的首尾階段,是個瘋狂加班的階段.加班rework,...
開發細節總結
多位元組字元 英文1個位元組,中文2個位元組 unicode 英文2位元組 中文2位元組.vs 2005之後專案使用的是unicode字符集 unicode下資料型別轉換 1 cstring轉int cstring b 123 int i i ttoi b 在使用多字符集下 atoi array t...
solidity細節總結
返回值出現乙個view不知道什麼意思?function getbalance address addr public view returns uint 解釋 函式 function private public internal external modifier pure constant vi...