Создание Array2D в F # (VS2010 Beta 1) - PullRequest
1 голос
/ 09 июля 2009

Рассмотрим следующий фрагмент кода в VS2010 Beta 1:

let array = Array2D.zeroCreate 1000 500

Это приводит к ошибке, а именно:

 error FS0030: Value restriction. The value 'array' has been inferred to have 
generic type val array : '_a [,]
Either define 'array' as a simple data term, make it a function with explicit 
arguments or, if you do not intend for it to be generic, add a type annotation.

Могу ли я явно установить тип (в моем случае это сетка строк)?

Ответы [ 3 ]

6 голосов
/ 09 июля 2009

Вы можете явно указать тип следующим образом:

let array : string [,] = Array2D.zeroCreate 1000 500

Для получения дополнительной информации об ограничении значений вы можете обратиться к этой странице F # -Wiki

3 голосов
/ 09 июля 2009

Вы также можете использовать init для создания массива, хотя он может быть медленнее.

let array = Array2D.init 1000 500 (fun _ _ -> "")

Обнуление массива обычно не наблюдается в функциональном программировании. Гораздо более распространено передать функцию инициализации в init и просто создать массив со значениями, которые вы хотите.

1 голос
/ 10 июля 2009

Чтобы создать двумерный массив, содержащий пустые строки:

let array = Array2D.create 1000 500 ""
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...