Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Formatting OCaml格式:如何缩进自动换行符_Formatting_Ocaml - Fatal编程技术网

Formatting OCaml格式:如何缩进自动换行符

Formatting OCaml格式:如何缩进自动换行符,formatting,ocaml,Formatting,Ocaml,我正在尝试使用OCaml的模块漂亮地打印一些结构。根据,我只需要使用方框,并在适合新行的地方指定断点。然而,我无法获得正确的缩进 例如: # open Format;; # fprintf std_formatter "bar = foo(@[<hv 1>lkjlkjlkj: lkjlkjlkj,@ lkjlkjlkjlj: lkjlkjlkjlkj,@ lkjj: lkjlk@])";; bar = foo( lkjlkjlkj: lkjlkjlkj, lkjlkjlkjlj

我正在尝试使用OCaml的模块漂亮地打印一些结构。根据,我只需要使用方框,并在适合新行的地方指定断点。然而,我无法获得正确的缩进

例如:

# open Format;;
# fprintf std_formatter "bar =  foo(@[<hv 1>lkjlkjlkj: lkjlkjlkj,@ lkjlkjlkjlj: lkjlkjlkjlkj,@ lkjj: lkjlk@])";;
bar =  foo(
lkjlkjlkj: lkjlkjlkj,
 lkjlkjlkjlj: lkjlkjlkjlkj,
 lkjj: lkjlk)
- : unit = ()

如何让它正确缩进参数?

我无法复制。我明白了:

# Format.fprintf Format.std_formatter "bar =  foo(@[<hv 1>lkjlkjlkj: lkjlkjlkj,@ lkjlkjlkjlj: lkjlkjlkjlkj,@ lkjj: lkjlk,@ aze: azeioajze@])";;
bar =  foo(lkjlkjlkj: lkjlkjlkj,
            lkjlkjlkjlj: lkjlkjlkjlkj,
            lkjj: lkjlk,
            aze: azeioajze)- : unit = ()

这是意料之中的。打开一个框不会导致剪切,所以如果你想在foo之后换行,你应该写@[@,。

我无法复制。我得到了这个:

# Format.fprintf Format.std_formatter "bar =  foo(@[<hv 1>lkjlkjlkj: lkjlkjlkj,@ lkjlkjlkjlj: lkjlkjlkjlkj,@ lkjj: lkjlk,@ aze: azeioajze@])";;
bar =  foo(lkjlkjlkj: lkjlkjlkj,
            lkjlkjlkjlj: lkjlkjlkjlkj,
            lkjj: lkjlk,
            aze: azeioajze)- : unit = ()

这是意料之中的。打开一个框不会导致剪切,所以如果你想在foo之后换行,你应该写@[@,。

如果我没有弄错,你的问题的根源是最大缩进限制;如果你的代码以Format.set_margin 20开头,那么它的副作用就是将最大缩进限制也设置为10

这意味着本应以大于10的缩进打开的箱子将被推到新行,并以0的缩进打开

换句话说,

 Format.set_margin 20;;
 Format.printf "bar =  foo(@[<hv 1>lkjlkjlkj: lkjlkjlkj,@ lkjlkjlkjlj: lkjlkjlkjlkj,@ lkjj: lkjlk,@ aze: azeioajze@])@.";;
设置边距后,将最大缩进限制设置为11可部分解决此问题:

 Format.set_margin 20; Format.set_max_indent 11; 
 Format.printf "bar =  foo(@[<hv 1>lkjlkjlkj: lkjlkjlkj,@ lkjlkjlkjlj: lkjlkjlkjlkj,@ lkjj: lkjlk,@ aze: azeioajze@])@.";;
换句话说,高压箱是在不需要断线的情况下打开的;但是压痕没有增加

将最大缩进设置为介于12和18之间的值

 Format.set_margin 20; Format.set_max_indent 12; 
 Format.printf "bar =  foo(@[<hv 1>lkjlkjlkj: lkjlkjlkj,@ lkjlkjlkjlj: lkjlkjlkjlkj,@ lkjj: lkjlk,@ aze: azeioajze@])@.";;

这里的附加信息可能是,您应该始终按此顺序同时设置边距和最大缩进限制。

如果我没有弄错的话,您的问题的根源是最大缩进限制;如果您的代码以Format.set_margin 20开头,那么它也会产生设置最大缩进的副作用限制在10

这意味着本应以大于10的缩进打开的箱子将被推到新行,并以0的缩进打开

换句话说,

 Format.set_margin 20;;
 Format.printf "bar =  foo(@[<hv 1>lkjlkjlkj: lkjlkjlkj,@ lkjlkjlkjlj: lkjlkjlkjlkj,@ lkjj: lkjlk,@ aze: azeioajze@])@.";;
设置边距后,将最大缩进限制设置为11可部分解决此问题:

 Format.set_margin 20; Format.set_max_indent 11; 
 Format.printf "bar =  foo(@[<hv 1>lkjlkjlkj: lkjlkjlkj,@ lkjlkjlkjlj: lkjlkjlkjlkj,@ lkjj: lkjlk,@ aze: azeioajze@])@.";;
换句话说,高压箱是在不需要断线的情况下打开的;但是压痕没有增加

将最大缩进设置为介于12和18之间的值

 Format.set_margin 20; Format.set_max_indent 12; 
 Format.printf "bar =  foo(@[<hv 1>lkjlkjlkj: lkjlkjlkj,@ lkjlkjlkjlj: lkjlkjlkjlkj,@ lkjj: lkjlk,@ aze: azeioajze@])@.";;

这里的附加信息可能是,您应该始终同时按此顺序设置边距和最大缩进限制。

啊,是的,这是预期输出中的错误。我更正了它。啊,是的,这是预期输出中的错误。我更正了它。