簡體   English   中英

a.{X} 在 OCaml 中是什么意思?

[英]What does a.{X} mean in OCaml?

我目前正在嘗試將一些 OCaml 移植到 F#。 我對 OCaml 處於“深淵”,我的 F# 有點生銹。

無論如何,OCaml 代碼在 OCaml 編譯器中構建良好,但(不足為奇)在 F# 編譯器中產生大量錯誤,即使打開了 ML 兼容性。 一些錯誤看起來是保留字,但大部分錯誤都在抱怨.{在以下行中:

 m.(a).(b) <- w.{a + b * c};

a,b,c 是整數。

我已經通過 OCaml 網站、Stackoverflow、法語 O'Reilly 書的英文翻譯等進行了大量搜索,但找不到類似的東西。 當然,大多數搜索工具都存在標點符號問題,這無濟於事! 是的,我找到了對. 用於引用記錄成員,而{ }用於定義記錄,但兩者都在一起? 從用法來看,我認為它是某種關聯數組或稀疏數組?

這個語法是什么意思? 最接近的 F# 等效物是多少?

這里有 oCaml 文檔/手冊的 pdf:

http://caml.inria.fr/distrib/ocaml-3.12/ocaml-3.12-refman.pdf

在第 496 頁(朝向頁面底部),它說通用 arrays 及其獲取方法:

val get: ('a, 'b, 'c) t -> int 數組 -> 'a

讀取通用大數組的元素。 Genarray.get a [|i1; ...; iN|] 返回 a 的元素,其第一維坐標為 i1,第二維坐標為 i2,. . ., iN 在第 N 維。

如果 a 具有 C 布局,則坐標必須大於或等於 0 且嚴格小於 a 的對應尺寸。 如果a有Fortran布局,坐標必須大於等於1且小於等於a的對應尺寸。 如果數組 a 沒有精確的 N 維,或者如果坐標在數組邊界之外,則引發 Invalid_argument。

如果 N > 3,則提供替代語法:您可以編寫 a.{i1, i2, ..., iN} 而不是 Genarray.get a [|i1; ...; iN|]。 (帶有一個、兩個或三個坐標的語法 a.{...} 保留用於訪問一維、二維和三維 arrays,如下所述。)

此外,它說(特別是關於一維數組):

val get: ('a, 'b, 'c) t -> int -> 'a

Array1.get ax,或者 a.{x},返回 a 的索引 x 處的元素。 如果 a 具有 C 布局,x 必須大於或等於 0 且嚴格小於 Array1.dim a。 如果 a 有 Fortran 布局,x 必須大於或等於 1 且小於或等於 Array1.dim a。 否則,引發 Invalid_argument。

在 F# 中,您也可以使用Array.get方法訪問數組元素。 但是,更接近的語法是w.[a + b * c] 簡而言之,在 F# 中,使用[]而不是{}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM