F # - podstawowe we / wy

Podstawowe wejście Wyjście obejmuje -

  • Czytanie i pisanie w konsoli.
  • Czytanie zi zapisywanie do pliku.

Moduł Core.Printf

Użyliśmy funkcji printf i printfn do zapisu w konsoli. W tej sekcji przyjrzymy się szczegółomPrintf moduł F #.

Oprócz powyższych funkcji, moduł Core.Printf F # ma różne inne metody drukowania i formatowania przy użyciu znaczników% jako symboli zastępczych. Poniższa tabela przedstawia metody wraz z krótkim opisem -

Wartość Opis
bprintf: StringBuilder → BuilderFormat <'T> →' T Drukuje do StringBuilder.
eprintf: TextWriterFormat <'T> →' T Wyświetla sformatowane wyjście na stderr.
eprintfn: TextWriterFormat <'T> →' T Wyświetla sformatowane dane wyjściowe na stderr, dodając nowy wiersz.
failwithf: StringFormat <'T,' Wynik> → 'T Drukuje do bufora łańcuchowego i zgłasza wyjątek z podanym wynikiem.
fprintf: TextWriter → TextWriterFormat <'T> →' T Drukuje dla autora tekstu.
fprintfn: TextWriter → TextWriterFormat <'T> →' T Drukuje do pisarza tekstu, dodając nowy wiersz.
kbprintf: (jednostka → 'Wynik) → StringBuilder → BuilderFormat <' T, 'Wynik> →' T Podobnie jak bprintf, ale wywołuje określoną funkcję w celu wygenerowania wyniku.
kfprintf: (jednostka → 'Wynik) → TextWriter → TextWriterFormat <' T, 'Wynik> →' T Podobnie jak fprintf, ale wywołuje określoną funkcję w celu wygenerowania wyniku.
kprintf: (string → 'Wynik) → StringFormat <' T, 'Wynik> →' T Podobnie jak printf, ale wywołuje określoną funkcję w celu wygenerowania wyniku. Na przykład, pozwalają one drukować na wymuszenie wyrównania po wprowadzeniu całego wyjścia do kanału, ale nie wcześniej.
ksprintf: (string → 'Wynik) → StringFormat <' T, 'Wynik> →' T Podobnie jak sprintf, ale wywołuje określoną funkcję w celu wygenerowania wyniku.
printf: TextWriterFormat <'T> →' T Wyświetla sformatowane dane wyjściowe na standardowe wyjście.
printfn: TextWriterFormat <'T> →' T Wyświetla sformatowane dane wyjściowe na standardowe wyjście, dodając nowy wiersz.
sprintf: StringFormat <'T> →' T Drukuje do ciągu przy użyciu wewnętrznego buforu ciągu i zwraca wynik jako ciąg.

Specyfikacje formatu

Specyfikacje formatu są używane do formatowania wejścia lub wyjścia, zgodnie z potrzebami programistów.

Są to ciągi znaków ze znacznikami% wskazującymi symbole zastępcze formatu.

Składnia symboli zastępczych formatu to -

%[flags][width][.precision][type]

Plik type jest interpretowane jako -

Rodzaj Opis
%b Formaty a bool, sformatowany jako true lub false.
%do Formatuje znak.
% s Formaty a string, sformatowany jako zawartość, bez interpretowania żadnych znaków zmiany znaczenia.
% d,% i Formatuje dowolny podstawowy typ liczby całkowitej sformatowany jako dziesiętna liczba całkowita ze znakiem, jeśli podstawowy typ liczby całkowitej jest podpisany.
% u Formatuje dowolny podstawowy typ liczby całkowitej sformatowany jako dziesiętna liczba całkowita bez znaku.
% x Formatuje dowolny podstawowy typ liczby całkowitej sformatowany jako liczba szesnastkowa bez znaku, używając małych liter od a do f.
% X Formatuje dowolny podstawowy typ liczby całkowitej sformatowany jako liczba szesnastkowa bez znaku, używając wielkich liter od A do F.
% o Formatuje dowolny podstawowy typ liczby całkowitej sformatowany jako ósemkowa liczba całkowita bez znaku.
% e,% E,% f,% F,% g,% G Formatuje dowolny podstawowy typ zmiennoprzecinkowy (float, float32) sformatowany przy użyciu specyfikacji formatu zmiennoprzecinkowego w stylu C.
% e,% E Formatuje wartość ze znakiem, która ma postać [-] d.dddde [znak] ddd, gdzie d to pojedyncza cyfra dziesiętna, dddd to jedna lub więcej cyfr dziesiętnych, ddd to dokładnie trzy cyfry dziesiętne, a znak to + lub -.
%fa Formatuje wartość ze znakiem w postaci [-] dddd.dddd, gdzie dddd to jedna lub więcej cyfr dziesiętnych. Liczba cyfr przed przecinkiem zależy od wielkości liczby, a liczba cyfr po przecinku zależy od wymaganej dokładności.
% g,% G Formatuje wartość ze znakiem wydrukowaną w formacie f lub e, w zależności od tego, który jest bardziej zwarty dla danej wartości i dokładności.
% M Formatuje wartość Decimal.
% O Formatuje dowolną wartość, drukowaną przez umieszczenie obiektu w ramce i użycie jego ToString metoda.
% A,% + A Formatuje dowolną wartość, drukowaną z domyślnymi ustawieniami układu. Użyj% + A, aby wydrukować strukturę związków dyskryminowanych z reprezentacjami wewnętrznymi i prywatnymi.
%za

Ogólny specyfikator formatu wymaga dwóch argumentów. Pierwszy argument to funkcja, która przyjmuje dwa argumenty: pierwszy parametr kontekstu odpowiedniego typu dla danej funkcji formatującej (na przykład TextWriter), a drugi wartość do wydrukowania i która zwraca lub zwraca odpowiedni tekst.

Drugi argument to określona wartość do wydrukowania.

% t Ogólny specyfikator formatu wymaga jednego argumentu: funkcji, która akceptuje parametr kontekstu odpowiedniego typu dla danej funkcji formatującej (aTextWriter) i która albo wyprowadza, albo zwraca odpowiedni tekst. Podstawowe typy liczb całkowitych tobyte, sbyte, int16, uint16, int32, uint32, int64, uint64, nativeint, i unativeint. Podstawowe typy zmiennoprzecinkowe to float i float32.

Plik widthjest opcjonalnym parametrem. Jest to liczba całkowita określająca minimalną szerokość wyniku. Na przykład% 5d drukuje liczbę całkowitą z co najmniej 5 znakami spacji.

Ważny flags opisano w poniższej tabeli -

Wartość Opis
0 Określa, aby dodać zera zamiast spacji, aby uzyskać wymaganą szerokość.
- Określa wyrównywanie wyniku do lewej w określonej szerokości.
+ Określa, że ​​należy dodać znak +, jeśli liczba jest dodatnia (aby dopasować znak - dla liczb ujemnych).
' ' (przestrzeń) Określa, że ​​należy dodać dodatkową spację, jeśli liczba jest dodatnia (aby dopasować znak - dla liczb ujemnych).
# Nieważny.

Przykład

printf "Hello "
printf "World"
printfn ""
printfn "Hello "
printfn "World"
printf "Hi, I'm %s and I'm a %s" "Rohit" "Medical Student"

printfn "d: %f" 212.098f
printfn "e: %f" 504.768f

printfn "x: %g" 212.098f
printfn "y: %g" 504.768f

printfn "x: %e" 212.098f
printfn "y: %e" 504.768f
printfn "True: %b" true

Kiedy kompilujesz i wykonujesz program, daje to następujące dane wyjściowe -

Hello World
Hello
World
Hi, I'm Rohit and I'm a Medical Studentd: 212.098000
e: 504.768000
x: 212.098
y: 504.768
x: 2.120980e+002
y: 5.047680e+002
True: true

Klasa konsoli

Ta klasa jest częścią platformy .NET. Reprezentuje standardowe strumienie wejścia, wyjścia i błędów dla aplikacji konsolowych.

Zapewnia różne metody odczytu i zapisu w konsoli. Poniższa tabela przedstawia metody -

metoda Opis
Brzęczyk() Odtwarza dźwięk sygnału dźwiękowego przez głośnik konsoli.
Sygnał dźwiękowy (Int32, Int32) Odtwarza dźwięk sygnału dźwiękowego o określonej częstotliwości i czasie trwania przez głośnik konsoli.
Jasny Czyści bufor konsoli i odpowiednie okno konsoli z wyświetlanymi informacjami.
MoveBufferArea (Int32, Int32, Int32, Int32, Int32, Int32) Kopiuje określony obszar źródłowy buforu ekranu do określonego obszaru docelowego.
MoveBufferArea (Int32, Int32, Int32, Int32, Int32, Int32, Char, ConsoleColor, ConsoleColor) Kopiuje określony obszar źródłowy buforu ekranu do określonego obszaru docelowego.
OpenStandardError () Uzyskuje standardowy strumień błędów.
OpenStandardError (Int32) Uzyskuje standardowy strumień błędów, który jest ustawiony na określony rozmiar buforu.
OpenStandardInput () Uzyskuje standardowy strumień wejściowy.
OpenStandardInput (Int32) Uzyskuje standardowy strumień wejściowy, który jest ustawiony na określony rozmiar buforu.
OpenStandardOutput () Uzyskuje standardowy strumień wyjściowy.
OpenStandardOutput (Int32) Uzyskuje standardowy strumień wyjściowy, który jest ustawiony na określony rozmiar buforu.
Czytać Odczytuje następny znak ze standardowego strumienia wejściowego.
Kluczem przeczytać() Uzyskuje następny znak lub klawisz funkcyjny naciśnięty przez użytkownika. Wciśnięty klawisz jest wyświetlany w oknie konsoli.
ReadKey (wartość logiczna) Uzyskuje następny znak lub klawisz funkcyjny naciśnięty przez użytkownika. Wciśnięty klawisz jest opcjonalnie wyświetlany w oknie konsoli.
Czytaj linię Odczytuje następny wiersz znaków ze standardowego strumienia wejściowego.
ResetColor Ustawia domyślne kolory konsoli pierwszego planu i tła.
SetBufferSize Ustawia wysokość i szerokość obszaru bufora ekranu na określone wartości.
SetCursorPosition Ustawia pozycję kursora.
SetError Ustawia właściwość Error na określony obiekt TextWriter .
SetIn Ustawia właściwość In na określony obiekt TextReader .
SetOut Ustawia właściwość Out na określony obiekt TextWriter .
SetWindowPosition Ustawia pozycję okna konsoli względem bufora ekranu.
SetWindowSize Ustawia wysokość i szerokość okna konsoli na określone wartości.
Napisz (wartość logiczna) Zapisuje tekstową reprezentację określonej wartości logicznej w standardowym strumieniu wyjściowym.
Napisz (znak) Zapisuje określoną wartość znaku Unicode w standardowym strumieniu wyjściowym.
Napisz (Char []) Zapisuje określoną tablicę znaków Unicode w standardowym strumieniu wyjściowym.
Zapis (dziesiętny) Zapisuje tekstową reprezentację określonej wartości Decimal w standardowym strumieniu wyjściowym.
Napisz (podwójne) Zapisuje tekstową reprezentację określonej wartości zmiennoprzecinkowej o podwójnej precyzji w standardowym strumieniu wyjściowym.
Napisz (Int32) Zapisuje tekstową reprezentację określonej 32-bitowej liczby całkowitej ze znakiem w standardowym strumieniu wyjściowym.
Napisz (Int64) Zapisuje tekstową reprezentację określonej 64-bitowej liczby całkowitej ze znakiem w standardowym strumieniu wyjściowym.
Napisz (obiekt) Zapisuje tekstową reprezentację określonego obiektu w standardowym strumieniu wyjściowym.
Napisz (pojedynczy) Zapisuje tekstową reprezentację określonej wartości zmiennoprzecinkowej o pojedynczej precyzji w standardowym strumieniu wyjściowym.
Napisz (ciąg) Zapisuje określoną wartość ciągu w standardowym strumieniu wyjściowym.
Napisz (UInt32) Zapisuje tekstową reprezentację określonej 32-bitowej liczby całkowitej bez znaku w standardowym strumieniu wyjściowym.
Napisz (UInt64) Zapisuje tekstową reprezentację określonej 64-bitowej liczby całkowitej bez znaku w standardowym strumieniu wyjściowym.
Napisz (ciąg, obiekt) Zapisuje tekstową reprezentację określonego obiektu w standardowym strumieniu wyjściowym przy użyciu określonych informacji o formacie.
Napisz (ciąg, obiekt []) Zapisuje tekstową reprezentację określonej tablicy obiektów w standardowym strumieniu wyjściowym przy użyciu określonych informacji o formacie.
Napisz (Char [], Int32, Int32) Zapisuje określoną podtablicę znaków Unicode w standardowym strumieniu wyjściowym.
Napisz (ciąg, obiekt, obiekt) Zapisuje tekstową reprezentację określonych obiektów w standardowym strumieniu wyjściowym przy użyciu określonych informacji o formacie.
Napisz (ciąg, obiekt, obiekt, obiekt) Zapisuje tekstową reprezentację określonych obiektów w standardowym strumieniu wyjściowym przy użyciu określonych informacji o formacie.
Napisz (ciąg, obiekt, obiekt, obiekt, obiekt) Zapisuje tekstową reprezentację określonych obiektów i listę parametrów o zmiennej długości w standardowym strumieniu wyjściowym przy użyciu określonych informacji o formacie.
WriteLine () Zapisuje bieżący terminator linii w standardowym strumieniu wyjściowym.
WriteLine (Boolean) Zapisuje tekstową reprezentację określonej wartości logicznej, po której następuje bieżący terminator wiersza, w standardowym strumieniu wyjściowym.
WriteLine (znak) Zapisuje określony znak Unicode, po którym następuje bieżący terminator wiersza, wartość w standardowym strumieniu wyjściowym.
WriteLine (Char []) Zapisuje określoną tablicę znaków Unicode, po której następuje bieżący terminator wiersza, w standardowym strumieniu wyjściowym.
WriteLine (dziesiętny) Zapisuje tekstową reprezentację określonej wartości Decimal, po której następuje bieżący terminator wiersza, w standardowym strumieniu wyjściowym.
WriteLine (podwójny) Zapisuje tekstową reprezentację określonej wartości zmiennoprzecinkowej o podwójnej precyzji, po której następuje bieżący terminator wiersza, w standardowym strumieniu wyjściowym.
WriteLine (Int32) Zapisuje tekstową reprezentację określonej 32-bitowej liczby całkowitej ze znakiem, po której następuje bieżący terminator wiersza, w standardowym strumieniu wyjściowym.
WriteLine (Int64) Zapisuje tekstową reprezentację określonej 64-bitowej wartości całkowitej ze znakiem, po której następuje bieżący terminator wiersza, w standardowym strumieniu wyjściowym.
WriteLine (obiekt) Zapisuje tekstową reprezentację określonego obiektu, po której następuje bieżący terminator wiersza, w standardowym strumieniu wyjściowym.
WriteLine (pojedynczy) Zapisuje tekstową reprezentację określonej wartości zmiennoprzecinkowej o pojedynczej precyzji, po której następuje bieżący terminator wiersza, w standardowym strumieniu wyjściowym.
WriteLine (ciąg) Zapisuje określoną wartość ciągu, po której następuje bieżący terminator wiersza, w standardowym strumieniu wyjściowym.
WriteLine (UInt32) Zapisuje tekstową reprezentację określonej 32-bitowej liczby całkowitej bez znaku, po której następuje bieżący terminator wiersza, w standardowym strumieniu wyjściowym.
WriteLine (UInt64) Zapisuje tekstową reprezentację określonej 64-bitowej wartości całkowitej bez znaku, po której następuje bieżący terminator wiersza, w standardowym strumieniu wyjściowym.
WriteLine (ciąg, obiekt) Zapisuje tekstową reprezentację określonego obiektu, po której następuje bieżący terminator wiersza, w standardowym strumieniu wyjściowym przy użyciu określonych informacji o formacie.
WriteLine (ciąg, obiekt []) Zapisuje tekstową reprezentację określonej tablicy obiektów, po której następuje bieżący terminator wiersza, w standardowym strumieniu wyjściowym przy użyciu określonych informacji o formacie.
WriteLine (Char [], Int32, Int32) Zapisuje określoną podtablicę znaków Unicode, po której następuje bieżący terminator wiersza, w standardowym strumieniu wyjściowym.
WriteLine (ciąg, obiekt, obiekt) Zapisuje tekstową reprezentację określonych obiektów, po której następuje bieżący terminator wiersza, w standardowym strumieniu wyjściowym przy użyciu określonych informacji o formacie.
WriteLine (ciąg, obiekt, obiekt, obiekt) Zapisuje tekstową reprezentację określonych obiektów, po której następuje bieżący terminator wiersza, w standardowym strumieniu wyjściowym przy użyciu określonych informacji o formacie.
WriteLine (ciąg, obiekt, obiekt, obiekt, obiekt) Zapisuje tekstową reprezentację określonych obiektów i listę parametrów o zmiennej długości, po której następuje bieżący terminator wiersza, w standardowym strumieniu wyjściowym przy użyciu określonych informacji o formacie.

Poniższy przykład demonstruje czytanie z konsoli i pisanie do niej -

Przykład

open System
let main() =
   Console.Write("What's your name? ")
   let name = Console.ReadLine()
   Console.Write("Hello, {0}\n", name)
   Console.WriteLine(System.String.Format("Big Greetings from {0} and {1}", "TutorialsPoint", "Absoulte Classes"))
   Console.WriteLine(System.String.Format("|{0:yyyy-MMM-dd}|", System.DateTime.Now))
main()

Kiedy kompilujesz i wykonujesz program, daje to następujące dane wyjściowe -

What's your name? Kabir
Hello, Kabir
Big Greetings from TutorialsPoint and Absoulte Classes
|2015-Jan-05|

Przestrzeń nazw System.IO

Przestrzeń nazw System.IO zawiera wiele przydatnych klas do wykonywania podstawowych operacji we / wy.

Zawiera typy lub klasy, które umożliwiają odczytywanie i zapisywanie do plików i strumieni danych oraz typy, które zapewniają podstawową obsługę plików i katalogów.

Klasy przydatne przy pracy z systemem plików -

  • Klasa System.IO.File służy do tworzenia, dołączania i usuwania plików.
  • Klasa System.IO.Directory służy do tworzenia, przenoszenia i usuwania katalogów.
  • Klasa System.IO.Path wykonuje operacje na łańcuchach, które reprezentują ścieżki plików.
  • Klasa System.IO.FileSystemWatcher umożliwia użytkownikom nasłuchiwanie katalogu pod kątem zmian.

Klasy przydatne do pracy ze strumieniami (sekwencja bajtów) -

  • Klasa System.IO.StreamReader służy do odczytywania znaków ze strumienia.
  • Klasa System.IO.StreamWriter służy do zapisywania znaków w strumieniu.
  • Klasa System.IO.MemoryStream tworzy w pamięci strumień bajtów.

W poniższej tabeli przedstawiono wszystkie klasy dostępne w przestrzeni nazw wraz z krótkim opisem -

Klasa Opis
BinaryReader Odczytuje pierwotne typy danych jako wartości binarne w określonym kodowaniu.
BinaryWriter Zapisuje typy pierwotne w postaci binarnej w strumieniu i obsługuje pisanie ciągów w określonym kodowaniu.
BufferedStream Dodaje warstwę buforującą do operacji odczytu i zapisu w innym strumieniu.
Informator Udostępnia statyczne metody tworzenia, przenoszenia i wyliczania w katalogach i podkatalogach.
DirectoryInfo Udostępnia metody instancji służące do tworzenia, przenoszenia i wyliczania w katalogach i podkatalogach.
DirectoryNotFoundException Wyjątek, który jest generowany, gdy nie można znaleźć części pliku lub katalogu.
DriveInfo Zapewnia dostęp do informacji na dysku.
DriveNotFoundException Wyjątek, który jest generowany podczas próby uzyskania dostępu do dysku lub udziału, który nie jest dostępny.
EndOfStreamException Wyjątek, który jest generowany podczas próby odczytu po zakończeniu strumienia.
ErrorEventArgs Zawiera dane dla zdarzenia FileSystemWatcher.Error.
Plik Zapewnia statyczne metody tworzenia, kopiowania, usuwania, przenoszenia i otwierania pojedynczego pliku oraz pomaga w tworzeniu obiektów FileStream.
FileFormatException Wyjątek, który jest generowany, gdy plik wejściowy lub strumień danych, który ma być zgodny z określoną specyfikacją formatu pliku, jest nieprawidłowo sformułowany.
Informacja o pliku Zapewnia właściwości i metody instancji do tworzenia, kopiowania, usuwania, przenoszenia i otwierania plików oraz pomaga w tworzeniu obiektów FileStream.
FileLoadException Wyjątek, który jest generowany, gdy zostanie znaleziony zestaw zarządzany, ale nie można go załadować.
FileNotFoundException Wyjątek, który jest generowany, gdy próba uzyskania dostępu do pliku, który nie istnieje na dysku, kończy się niepowodzeniem.
FileStream Udostępnia Stream wokół pliku, obsługując synchroniczne i asynchroniczne operacje odczytu i zapisu.
FileSystemEventArgs Zawiera dane dotyczące zdarzeń w katalogu - Zmienione, Utworzone, Usunięte.
FileSystemInfo Udostępnia klasę bazową dla obiektów FileInfo i DirectoryInfo.
FileSystemWatcher Nasłuchuje powiadomień o zmianach systemu plików i zgłasza zdarzenia, gdy katalog lub plik w katalogu ulegają zmianie.
InternalBufferOverflowException Wyjątek zgłaszany w przypadku przepełnienia buforu wewnętrznego.
InvalidDataException Wyjątek, który jest generowany, gdy strumień danych ma nieprawidłowy format.
IODescriptionAttribute Ustawia opis, który projektanci wizualni mogą wyświetlać podczas odwoływania się do zdarzenia, przedłużacza lub właściwości.
IOException Wyjątek, który jest generowany, gdy wystąpi błąd we / wy.
MemoryStream Tworzy strumień, którego magazynem zapasowym jest pamięć.
Ścieżka Wykonuje operacje na instancjach typu String, które zawierają informacje o ścieżce do pliku lub katalogu. Te operacje są wykonywane w sposób wieloplatformowy.
PathTooLongException Wyjątek, który jest generowany, gdy ścieżka lub nazwa pliku jest dłuższa niż maksymalna długość zdefiniowana przez system.
PipeException Zgłaszane, gdy wystąpi błąd w nazwanym potoku.
RenamedEventArgs Zawiera dane dla zdarzenia o zmienionej nazwie.
Strumień Zawiera ogólny widok sekwencji bajtów. To jest klasa abstrakcyjna.
StreamReader Implementuje TextReader, który odczytuje znaki ze strumienia bajtów w określonym kodowaniu.
StreamWriter Implementuje TextWriter do pisania znaków w strumieniu w określonym kodowaniu. Aby przeglądać kod źródłowy .NET Framework dla tego typu, zobacz źródło odniesienia.
StringReader Implementuje TextReader, który odczytuje ciąg.
StringWriter Implementuje TextWriter do zapisywania informacji w ciągu. Informacje są przechowywane w źródłowym StringBuilder.
TextReader Reprezentuje czytelnika, który może odczytać sekwencyjną serię znaków.
TextWriter Reprezentuje pisarza, który może pisać sekwencyjną serię znaków. Ta klasa jest abstrakcyjna.
UnmanagedMemoryAccessor Zapewnia losowy dostęp do niezarządzanych bloków pamięci z kodu zarządzanego.
UnmanagedMemoryStream Zapewnia dostęp do niezarządzanych bloków pamięci z kodu zarządzanego.
WindowsRuntimeStorageExtensions Zawiera metody rozszerzające dla interfejsów IStorageFile i IStorageFolder w środowisku wykonawczym systemu Windows podczas tworzenia aplikacji ze Sklepu Windows.
WindowsRuntimeStreamExtensions Zawiera metody rozszerzenia służące do konwertowania między strumieniami w środowisku wykonawczym systemu Windows i strumieniami zarządzanymi w aplikacji .NET for Windows Store.

Przykład

Poniższy przykład tworzy plik o nazwie test.txt, zapisuje tam wiadomość, odczytuje tekst z pliku i drukuje go na konsoli.

Note - Ilość kodu potrzebnego do tego jest zaskakująco mniejsza!

open System.IO // Name spaces can be opened just as modules
File.WriteAllText("test.txt", "Hello There\n Welcome to:\n Tutorials Point")
let msg = File.ReadAllText("test.txt")
printfn "%s" msg

Kiedy kompilujesz i wykonujesz program, daje to następujące dane wyjściowe -

Hello There
Welcome to:
Tutorials Point