Sök…


Introduktion

Ingång och utgång i schema hanteras vanligtvis genom portar. En port är en datastruktur som används för att interagera med världen utanför Scheme. En port är inte begränsad till filer utan kan användas för att läsa / skriva till uttag. På vissa sätt är portobjektet ett slags universellt objekt som inte bara kan hantera filer och uttag utan någon form av läs / skrivoperation med operativsystemet. Till exempel kan man implementera en port som kan skriva till en skrivare eller till och med styra en CNC-maskin från Scheme med hjälp av en port.

Skapa en ingångsport

En ingångsport kan skapas på många sätt, men vanligtvis börjar metoden med open-input- .

Strängport

Du kan använda en sträng som en port med open-input-string . Det kommer att skapa en port som kan läsas från strängen.

(define p
  (open-input-string "(a . (b . (c . ()))) 34"))

Filport

Du kan öppna en fil för läsning med open-input-file .

(define p
  (open-input-file "path/to/file"))

Läs från en ingångsport

Läsning från en ingångsport kan göras på många sätt. Vi kan använda read som används av REPL. Det kommer att läsa och tolka utrymme separerade uttryck.

Ta exemplet från strängporten ovan. Vi kan läsa från hamnen så här:

(define p
  (open-input-string "(a . (b . (c . ()))) 34"))
(read p) -> (a b c)
(read p) -> 34

Vi kan läsa från en port som char hjälp av den speciella metoden read-char . Detta kommer att returnera en enda char från porten som vi läser från.

(define p (open-input-string "hello"))
(read-char p) -> #\h


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow