微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 F# 中使用 %A 格式时,是否可以配置显示的列表项数?

如何解决在 F# 中使用 %A 格式时,是否可以配置显示的列表项数?

printfn "%A" [1..1000]

在 f# 互动节目中

[1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; 17; 18; 19; 20; 21; 22;
23; 24; 25; 26; 27; 28; 29; 30; 31; 32; 33; 34; 35; 36; 37; 38; 39; 40; 41; 42;
43; 44; 45; 46; 47; 48; 49; 50; 51; 52; 53; 54; 55; 56; 57; 58; 59; 60; 61; 62;
63; 64; 65; 66; 67; 68; 69; 70; 71; 72; 73; 74; 75; 76; 77; 78; 79; 80; 81; 82;
83; 84; 85; 86; 87; 88; 89; 90; 91; 92; 93; 94; 95; 96; 97; 98; 99; 100; ...]

以下设置不影响显示的列表成员数量

fsi.PrintSize <- 222        // no effect
fsi.PrintLength <- 222      // no effect
fsi.PrintDepth <- 222       // no effect
fsi.PrintWidth <- 222       // no effect
fsi.ShowIEnumerable <- true // no effect
  1. 是否可以配置在 f#interactive显示的成员数量
  2. 是否可以将其配置为 (sprintf "%A") 将其视为 f# Interactive 之外的

我问这个是因为我打印的记录很漂亮,目前有些值被截断了。所以最重要的问题是在没有截断值的情况下漂亮地打印记录 - 仅用于上下文。

%A 格式具有很好的优势,因为它可以很好地布局记录,我不想通过使用 StructuredFormatdisplayAttribute 来丢失这些记录。

这种格式化是用 %A 格式化大对象的一部分,它完美地工作,没有任何努力。所以我不是在问真正打印一个孤立的列表。


在 f# 源代码中:

https://github.com/dotnet/fsharp/blob/b23b2a0f99f12ece94c5ad89aabb9169d51091f3/src/fsharp/utils/sformat.fs 处检查了源代码

ObjectGraphFormatter 显然会进行格式化,接受格式选项。

最后几行可能会调用它:

let internal anyToStringForPrintf options (bindingFlags:BindingFlags) (value,typValue) = 
    let formatter = ObjectGraphFormatter(options,bindingFlags) 
    formatter.Format (ShowAll,value,typValue) |> layout_to_string options

由脚趾核心 Printf 模块调用,而后者又是内部的。

解决方法

我想我会这样做:

[1..1000] 
|> List.take 50
|> List.iter (printf "%A;")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?