快學Scala第二章學習筆記

2021-08-20 00:20:33 字數 978 閱讀 1604

1、如果在repl中貼上成塊的**,可以鍵入:paste,把**貼上進去,ctrl+d結束

2、在scala中,{}塊包含一系列的表示式,其結果也是乙個表示式。快中最後乙個表示式的值就是塊的值。

這種特性對於那種某個val初始化需要分多步完成的情況很有用。

例如:val distance=

3、x=y=1 //別這樣寫  y=1的值是(),不太可能把乙個unit蕾西的值賦予給x。

4、用readline函式從控制台讀取一行輸入。帶乙個引數作為提示字串

例如:val name=readline("your name: ")

5、在for迴圈的變數之前並沒有val或var的指定。該變數的型別是集合的元素型別。迴圈變數的作用域一直持續到迴圈結束。

util方法返回乙個並不包含上限的區間。

6、scala並沒有break、continue語句來退出迴圈。控制權的轉移是通過丟擲和捕獲異常完成的,如果時間很重要,盡量避免用這套機制。

7、如果for迴圈的迴圈體以yield開始,則該迴圈會構造出乙個集合,每次迭代生成集合中的乙個值。

8、定義函式,需要給出函式的名稱、引數和函式體。必須給出所有引數的型別,只要函式不是遞迴,可以不需要指定返回型別。scala編譯器可以通過=符號右側的表示式型別推斷出返回型別。遞迴函式沒有指定返回型別,scala編譯器無法校驗返回型別。

9、帶名引數並不需要跟引數列表的順序完全一致。帶名引數可以讓函式更加可讀。

10、scala對於不返回值的函式有特殊的表示法。如果函式體包含在花括號當中但沒有前面的=號,那麼返回型別就是unit

11、當val被宣告為lazy時,它的初始化將被推遲,直到我們首次對它取值。懶值並不是沒有額外開銷,我們每次訪問,都會有乙個方法被呼叫,這個方法將會以執行緒安全的方式檢查該值是否已被初始化。

12、try/catch和try/finally的目的是互補的。try/catch語句處理異常,而try/finally語句在異常沒有被處理時執行某種動作(通常是清理工作)

第二章學習筆記

在c 中,陣列下標從0開始,而不是1.c 不支援陣列的抽象,也不支援對整個陣列的操作。在c 中,物件可以靜態分配 即編譯器在處理程式源 時分配,也可以動態分配 即程式執行時,用執行時刻庫函式來分配。靜態與動態記憶體分配的兩個主要區別是 1 靜態物件是有名字的變數,可以直接對你進行操作。而動態物件是沒...

第二章學習筆記

ansi c 有翻譯和執行兩種環境,且不必在一台機器上,例如交叉編譯器 cross compiler 作業系統也是如此 freestanding environment 翻譯 將源 轉換為可執行機器指令 執行 實際執行 翻譯經過以下階段 形成的目標檔案字尾可能在不同系統下不同,如 o obj cc ...

第二章筆記

1.遞迴查詢和迭代查詢 遞迴查詢是一條環路,直接想成遞迴的定義就行,你想查乙個 的ip,首先將這個 傳給它的本地dns,然後認為本地dns可以直接將ip給你,然後本地dns為了知道這個ip又詢問下個dns伺服器。從此可以看出,增加了被涉及的伺服器的資料,所以一般用迭代查詢,迭代查詢是你詢問完後給你下...