例如:当我想连接一个 int 列表时:[1, 2, 3]
与 x
我的代码是:
[1, 2, 3] @ [x]
但在另一种情况下,我有一个以列表为参数的函数,
val foo : int list
我还有另一个功能
print_foo
服用foo
是一个参数,返回类型是val print_foo : int list list
我写了一个函数:
print_foo [foo]
我的问题是:
[foo]
在这种情况下被类型检查接受,但在逻辑意义?编写此函数的好方法是什么?
[[x]]
也是同样的问题您能否为我解释更多关于如何以及何时可以使用
[x]
或 [[x]]
, ETC...?非常感谢你,
最佳答案
[x]
表示包含一个元素的列表:x
.[[x]]
表示包含一个元素的列表:包含一个元素的列表:x
.
所以,如果你说 x
是 4
,然后 [x] = [4]
是仅包含 4
的列表, 和 [[x]] = [[4]]
是仅包含仅包含 4 的列表的列表。
如您所见,[x]
简单地说x
自己进入一个列表。如果 x = [1, 2, 3]
(也就是说,x
本身就是一个列表),那么您可能不想使用 [x] (= [[1, 2, 3]])
调用函数,然后给它一个包含原始列表的列表,而不是列表本身。当然,这可能是完全合法的,并且在某些情况下是需要的,但如果您不确定,很可能不需要它。
所以,如果你有 foo
是 int list
,然后您调用print_foo [foo]
,您是在说:“打印此列表,其中包含我要打印的列表。”你可能想说的是print_foo foo
,您省略了冗余列表包装器。这可以解释为“打印我要打印的这个列表”。
关于list - 如何在 Ocaml 中使用 [x]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8598877/