Erstellen Sie ein Byte-Array mit dynamischer Größe in F #

8

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:

%Vor%

Gibt es noch eine andere Möglichkeit, die in C # und Java besser funktioniert?

    
John Tall 16.06.2012, 13:44
quelle

4 Antworten

5

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 Array-Verständnis:

%Vor%

oder

%Vor%

Sehen Sie sich diese MSDN-Seite an ; Es enthält nützliche Informationen zur Verwendung von Array in F #.

    
pad 16.06.2012, 14:26
quelle
7

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,.

    
Gene Belitski 16.06.2012 14:01
quelle
7
%Vor%     
BLUEPIXY 16.06.2012 18:32
quelle
-1

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.

    
Jack 16.06.2012 13:50
quelle

Tags und Links