In C # und Java kann ein Byte-Array wie folgt erstellt werden
%Vor% wobei x
die Größe des Arrays angibt. Ich möchte in F # dasselbe machen. Ich habe gesucht, wie es geht und suchte danach in der Dokumentation. Ich denke, dass ich wahrscheinlich die falschen Suchbegriffe verwende, weil ich nicht herausfinden kann wie.
Was ich bisher gefunden habe ist, dass Array.create
wie folgt verwendet werden kann:
Gibt es noch eine andere Möglichkeit, die in C # und Java besser funktioniert?
Ich denke, Sie möchten ein nicht initialisiertes Array erstellen und es später füllen:
%Vor% Es ist die Art, wie Sie normalerweise in C # / Java arbeiten, was in F # unidiomatisch ist. Denk darüber nach; Wenn Sie vergessen, einige Elemente zu initialisieren, müssen Sie mit null
Alpträume umgehen.
In fast allen Fällen können Sie die obige Prozedur immer durch höherwertige Funktionen aus dem Array-Modul
oder
%Vor%Sehen Sie sich diese MSDN-Seite an ; Es enthält nützliche Informationen zur Verwendung von Array in F #.
Ein am nächsten liegendes F # -Analog wäre Array.zeroCreate:
%Vor% Anstelle der Initialisierung von impliziten Array-Elementen für 0
bytes auf Java und C # -Plattformen macht F # den Anfangswert von Array-Elementen offensichtlich.
Wie bei dynamic size
von b
in F # wird es bei der Zuweisung einmal durch x
-Wert definiert und kann später nicht geändert werden, indem x
geändert wird, ähnlich wie bei C # / Java,.
Was meinst du?
F # hat eine andere Syntax als C # und Java . Sie verwenden das Modul Array
, damit er ein Array mit einem Initialisierer. Nichts ist seltsam, eine Sprache ist funktional, während die andere zwingend ist, so dass diese Unterschiede tatsächlich benötigt werden.
Gemäß den F # Sprachspezifikationen können Sie nicht uninitialisierte Elemente deklarieren (es sei denn, Sie verwenden bestimmte Muster als Option
type, die nur Exploits sind, mit denen Sie das nicht initialisierte Konzept ohne wirklich ausdrücken können Sie müssen einen Initialisierer für Elemente im Array übergeben.