dart細節總結1

2021-09-01 08:52:31 字數 1356 閱讀 9782

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...