第四章 變數宣告

2022-07-05 08:21:12 字數 1815 閱讀 5775

//塊級作用域變數的獲取

function thecitythatalwayssleeps() ;

}return getcity();

}//重定義及遮蔽,這個版本的迴圈能得到正確的結果,因為內層迴圈的i可以遮蔽掉外層迴圈的i

function summatrix(matrix: number)

}return sum;

}//const 宣告

const numlivesforcat = 9;

const kitty = ;

// error

kitty = ;

// all "okay"

kitty.name = "rory";

kitty.name = "kitty";

kitty.name = "cat";

kitty.numlives--;

//最簡單的解構

let input = [1, 2];

let [first, second] = input;

console.log(first); // outputs 1

console.log(second); // outputs 2

// 交換變數

[first, second] = [second, first];

//作用於函式引數

function f([first, second]: [number, number])

f(input);

//陣列裡使用...語法建立剩餘變數

let [first, ...rest] = [1, 2, 3, 4];

console.log(first); // outputs 1

console.log(rest); // outputs [ 2, 3, 4 ]

//忽略你不關心的尾隨元素

let [first] = [1, 2, 3, 4];

console.log(first); // outputs 1

let [, second, , fourth] = [1, 2, 3, 4];

//物件解構

let o = ;

let = o;

//就像陣列解構,你可以用沒有宣告的賦值

( = );

//你可以在物件裡使用...語法建立剩餘變數

let = o;

let total = passthrough.b + passthrough.c.length;

//你也可以給屬性以不同的名字

let = o;

//預設值可以讓你在屬性為 undefined 時使用預設值

function keepwholeobject(wholeobject: ) = wholeobject;

}

//解構也能用於函式宣告

type c = ;

function f(: c): void

//將乙個陣列展開為另乙個陣列

let first = [1, 2];

let second = [3, 4];

let bothplus = [0, ...first, ...second, 5];

//將乙個物件展開為另乙個物件

let defaults = ;

let search = ;

//注意:如果前後物件有相同的屬性,則後面的覆蓋前面的

《Effective C 》第四章 設計與宣告

條款20 寧以pass by reference to const替換pass by value 這個條款其實也可以用pass by pointer to const來替代。因為如果傳值,對於使用者自定義型別來說十分費時,而使用const型別的引用或者指標來傳遞,不僅省時,而且保護了原物件不會被修改...

第四章 繼承

一 為什麼要繼承 在物件導向中我們將具有很多重複內容的類中的內容提取出來,寫成乙個單獨的類 其他類只需要繼承就能取得這些功能,同時可以在自己類中寫入獨特的自定義方法 二 繼承語法 inte ce circle nsobject 繼承是在介面中定義的 冒號後的類名是要整合的類,nsobject 是co...

第四章 物件

三個特性 身份 型別 值 每個物件都有唯一的身份來標識自己,使用內建函式id 得到。例子 usr bin env python coding utf 8 a 32 print a b a print id a id b 結果 d python27 python.exe e workp python ...