Scheme簡明教程4-資料類型轉換及其它類型

來源:互聯網
上載者:User

2.2.1     資料類型轉換

Scheme提供了許多可以進行資料類型轉換的過程。我們已經知道可以通過char-downcase 和 char-upcase過程來進字元大小寫轉換。字元還可以通過使用char->integer來轉換成整型,同樣的整型也可以通過integer->char被轉換成字元。(字元轉換成整型得到的結果通常是這個字元的ascii碼值。)

(char->integer#\d) =>  100
(integer->char50)  =>  #\2

字串可以被轉換成等價的字元列表。

(string->list"hello") =>  (#\h#\e#\l#\l#\o)

其它的轉換過程也都是一樣的風格list->string, vector->list 和 list->vector。

數字可以轉換成字串:(number->string16) =>  "16"

字串也可以轉換成數字。如果字串不能轉換成數字,則會返回#f。

(string->number"16")
=>  16
 
(string->number"Am I a not number?")
=>  #f

string->number第二個參數是選擇性參數,指示以幾進位來轉換。

(string->number"16"8) =>  14

八進位的數字 16 等於 14。

Symbols也可以轉換為字串,反之亦然:

(symbol->string'symbol)
=>  "symbol"
 
(string->symbol"string")
=>  string


 

2.1          其它資料類型

Scheme還包含了一些其它資料類型。一個是procedure(過程)。我們已經見過了許多過程了,例如,display, +, cons等。實際上,它們是一些承載了過程值的變數,過程本身內部的數值和字元並不可見:

cons
=>  <procedure>

迄今為止我們所見過的這些過程都屬於原始過程(系統過程),由一些全域變數來承載它們。使用者還可以添加自訂的過程。

還有另外種資料類型是port連接埠。一個連接埠是為輸入輸出提供執行的通道。連接埠通常會和檔案和控制台操作相關聯。

在我們的”Hello,World!”程式中,我們使用display過程向控制台輸出了一個字串。display可以接受兩個參數,第一個參數值是將輸出的值,另一個值則表示了即將承載顯示結果的輸出port(連接埠)。

在我們的程式中,display的第二參數是隱式參數。這時候display會採用標準輸出連接埠作為它的預設輸出連接埠。我們可以通過調用current-output-port過程來取得當前的標準輸出連接埠。我們可以更清楚的寫出

(display"Hello, World!" (current-output-port))

2.2          S-expressions

所有這些已經被討論過的資料類型可以被統一成一種通用的叫作s-expression(符號運算式或s-運算式)的資料類型(s代表符號)。像 42,#\c,(1 . 2) , #(ab c) , "Hello", (quote xyz) , (string->number "16"), 和 (begin (display "Hello,
World!") (newline))都是s-運算式。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.