如何在 OCaml 中修改数据结构并 return 它?
How do I modify a data structure and return it in OCaml?
在辅助函数中,我正在进行模式匹配以修改数据结构。我想修改数据结构,然后 return 修改后的数据。在我的方法中,return 类型是 unit()。我需要它 return 修改后的 hash_table.
我试过了:
let helperfunction firstlist secondlist hash_table =
match(firstlist, secondlist) ->
| (CUSTOMTYPE::tail, CUSTOMOBJA(a)::CUSTOMOBJB(b)::anotherTail) -> Hashtbl.add hash_table "key" (a+b); hash_table
还有,
let helperfunction firstlist secondlist hash_table =
match(firstlist, secondlist) ->
|(CUSTOMTYPE::tail, CUSTOMOBJA(a)::CUSTOMOBJB(b)::anotherTail) -> let aa = Hashtbl.add hash_table "key" (a+b); hash_table
None 其中的功能如我所愿。我需要的 python 类语言的功能是:
def helperfunction (HashMap hm, int ValueToBeAdded):
hm.add("key", ValueToBeAdded)
return hm
我是函数式编程的新手。
Hashtbl
是命令式(和可变的)数据结构,因此您不需要 return 它,但如果您愿意,可以。您的 Python 示例可以在 OCaml 中翻译成这样:
let helper_function hash_table value_to_be_added =
let () = Hashtbl.add hash_table "key" value_to_be_added in
hash_table
你的第二个例子很糟糕,但我没有发现第一个例子有任何问题(除了模式匹配的非穷尽性)。
在辅助函数中,我正在进行模式匹配以修改数据结构。我想修改数据结构,然后 return 修改后的数据。在我的方法中,return 类型是 unit()。我需要它 return 修改后的 hash_table.
我试过了:
let helperfunction firstlist secondlist hash_table =
match(firstlist, secondlist) ->
| (CUSTOMTYPE::tail, CUSTOMOBJA(a)::CUSTOMOBJB(b)::anotherTail) -> Hashtbl.add hash_table "key" (a+b); hash_table
还有,
let helperfunction firstlist secondlist hash_table =
match(firstlist, secondlist) ->
|(CUSTOMTYPE::tail, CUSTOMOBJA(a)::CUSTOMOBJB(b)::anotherTail) -> let aa = Hashtbl.add hash_table "key" (a+b); hash_table
None 其中的功能如我所愿。我需要的 python 类语言的功能是:
def helperfunction (HashMap hm, int ValueToBeAdded):
hm.add("key", ValueToBeAdded)
return hm
我是函数式编程的新手。
Hashtbl
是命令式(和可变的)数据结构,因此您不需要 return 它,但如果您愿意,可以。您的 Python 示例可以在 OCaml 中翻译成这样:
let helper_function hash_table value_to_be_added =
let () = Hashtbl.add hash_table "key" value_to_be_added in
hash_table
你的第二个例子很糟糕,但我没有发现第一个例子有任何问题(除了模式匹配的非穷尽性)。