(譯)Scheme簡明教程4-數據類型轉換及其它類型

2.2.1     數據類型轉換

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

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

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

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

=>

 

=>

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

八進制的數字 16 等於 14

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

=>

 

=>


 

2.1          其它數據類型

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

=>

迄今爲止我們所見過的這些過程都屬於原始過程(系統過程),由一些全局變量來承載它們。用戶還可以添加自定義的過程。

還有另外種數據類型是port端口。一個端口是爲輸入輸出提供執行的通道。端口通常會和文件和控制檯操作相關聯。

在我們的”HelloWorld程序中,我們使用display過程向控制檯輸出了一個字符串。display可以接受兩個參數,第一個參數值是將輸出的值,另一個值則表示了即將承載顯示結果的輸出port(端口)

在我們的程序中,display的第二參數是隱式參數。這時候display會採用標準輸出端口作爲它的默認輸出端口。我們可以通過調用current-output-port過程來取得當前的標準輸出端口。我們可以更清楚的寫出

2.2          S-expressions

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章