Konsolutdata (io)
Plan 11 step 40 (2026-10-07): io:format/1,2 och io:put_chars/1 skriver
till standard-utdata. De är inbyggda funktioner i runtimen för modulen io i
bryggans katalog (inbyggda funktioner); runtimen implementerar
OTP:s regler för io_lib_format och io_lib_pretty i C++
(io_format.cpp,
io_pretty.cpp).
Anrop
io:format(Format)ärio:format(Format, []). Båda returnerarok.io:put_chars(Chardata)skriver chardata: Unicode-tecken, UTF-8-binaries och nästlade listor som slutar med[]eller en binary. Allt annat (en atom, ett surrogat, ogiltig UTF-8, en bitstring) kastarbadarg.- Texten byggs i sin helhet och skrivs sedan som UTF-8, som OTP:s enhet för
standard-utdata gör i läget
-noshell(kodningenunicode). Ett fel skriver ingenting. En avvisad skrivning är runtime-feletoutput_failure(exit 70). - Kvalificerade anrop,
fun io:format/2,apply(io, format, Args)ochM:format(...)når alla de inbyggda funktionerna. Andraio-funktioner behåller diagnostikenunknown module io. En batchmodul med namnetioersätter inte de inbyggda funktionerna (OTP:sioär klistrig (sticky)).
Format
Formatär en atom (dess tecken), en binary (dess bytes som Latin-1-tecken) eller en lista. Ett listelement som inte är ett tecken är chardata som skrivs som det är, utan styrsekvenser, och flyttar kolumnen ett steg (OTP:s egenhet).- Styrsekvenser
~F.P.PadModC: fältbreddF(negativ eller-: vänsterjusterad), precisionP, utfyllnadstecken,*som tar ett heltal (eller utfyllnaden) från argumenten, modifierarnat(Unicode),l(ingen strängdetektering) ochk(ordnade maps; Clause skriver alltid ut maps i nyckelordning). Csom stöds:~w,~p,~s,~c,~b,~B,~i,~n,~~, med OTP:s fältregler:~skortar av eller fyller ut tillPinomF;~woch~bskriver*-tecken när texten inte ryms iF;~cupprepar tecknet;~b/~Btar basen frånP(2..36);~nmedFskriverFradbrytningar.- Utan
ttar~sendast Latin-1-tecken och~cskriver den låga byten av sitt heltal;~w/~pskriver atomtecken utanför Latin-1 som\x{...}. Medtläser~sbinaries som UTF-8 (med Latin-1 som reserv) och~pskriver<<"..."/utf8>>för utskrivbara UTF-8-binaries. badarg: ett okänt styrtecken, saknade eller extra argument, ett argument av fel typ,Fmindre änPför~s/~c, en vänsterjusterad~peller~n, en bas utanför 2..36, utdata som inte är Unicode.- Inte implementerat (
badarg, se skillnader):~e,~f,~g,~x,~X,~+,~#,~W,~Poch modifierarenK.
Snygg utskrift (~p)
- Radlängden är
F(standard 80, 0 skriver en rad); den första kolumnen ärP, annars den kolumn som utdata har nått på sin rad (tabbar till multiplar av 8). - Termen blir OTP:s mellanform: varje värde med sin längd på en rad; strängar
(platta listor av utskrivbara Latin-1-tecken, standardvärdet för
io:printable_range()), utskrivbara binaries, atomer och tal är text. - Det som ryms på resten av raden skrivs i sin helhet. Listor och tupler bryts
mellan element, justerade efter hakparentesen; taggade tupler
(
{atom, ...}) justeras efter taggen, eller dras in med 4 (eller 1) när det skulle passera halva raden; par i maps och fält i native records som inte ryms placerar värdet på nästa rad; långa binaries radbryts mellan bytes. - Behållare som är nästlade djupare än 256 nivåer kastar
system_limit(layouten rekurserar på native-stacken). - Formateringen körs till slut, hur stor termen än är (portioner).
Clause