将通用数组打印到控制台

用户名

如何将通用数组打印到控制台?这适用于简单的整数数组,但不适用于通用数组。

class procedure Print(const A: TArray<Integer>; const Name: String);
var
  I: Integer;
begin
  Write('Array ' + Name +' : ');
  Write('[');
  for I := 0 to High(A) do
  if I <> High(A) then
  begin
    WriteLn(A[I]);
    Write(', ');
  end
  else
  Write(A[I]);
  Write(']');
  WriteLn('');
end;
戴维·赫弗南

WriteWriteln程序不能通用的参数来调用。因此,显而易见的结论是,您需要在调用Writeand之前将泛型值转换为字符串Writeln

这可以通过利用TValue以下功能来实现

  1. TValue.From<T>生成新TValue实例的通用方法
  2. TValue.ToString方法是转换最常见的类型为字符串。

因此,我认为您正在寻找这样的东西:

{$APPTYPE CONSOLE}

uses
  System.Rtti;

type
  TMyClass = class
    class procedure Write<T>(const arr: array of T; const Name: string); static;
  end;

class procedure TMyClass.Write<T>(
  const arr: array of T; const Name: string);
var
  I: Integer;
begin
  System.Write('Array ' + Name +' : [');
  for I := 0 to high(arr) do begin
    System.Write(TValue.From(arr[i]).ToString);
    if I <> high(arr) then begin
      System.Write(', ');
    end;
  end;
  System.Writeln(']');
end;

begin
  TMyClass.Write<Integer>([1,2,3,4], 'integer');
  TMyClass.Write<Double>([42.666, 123.4], 'floating point');
  TMyClass.Write<string>(['foo', 'bar'], 'string');
  Readln;
end.

输出量

数组整数:[1、2、3、4]
数组浮点数:[42.666,123.4]
数组字符串:[foo,bar]

顺便说一句,让我不得不创建一个类来容纳这些方法真的让我很烦。我不明白为什么语言设计师会做出这个决定。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Chrome:将例外情况详细信息打印到控制台

来自分类Dev

无法将非英文文本打印到控制台窗口

来自分类Dev

如何将unicode符号打印到控制台

来自分类Dev

如何从XSJS打印到控制台

来自分类Dev

如何在C#中将2D数组打印到控制台

来自分类Dev

将xml打印到控制台(xml.etree.ElementTree)

来自分类Dev

ANTLR 4:避免将错误打印到控制台

来自分类Dev

将元素的内容打印到控制台

来自分类Dev

箭头功能-为什么将全局对象打印到控制台?

来自分类Dev

Python日志记录-防止将日志事件打印到控制台

来自分类Dev

Clion无法打印到控制台

来自分类Dev

PySpark打印到控制台

来自分类Dev

JavaDStream将Lambda中的RDD打印到控制台

来自分类Dev

打印到课堂之外的控制台

来自分类Dev

Kotlin Android打印到控制台

来自分类Dev

尝试将SerialPort输入打印到控制台

来自分类Dev

打印到控制台Cloudfront Domain

来自分类Dev

漂亮地将JSON打印到R控制台?

来自分类Dev

C ++函数不会将数组反向打印到控制台

来自分类Dev

将输出打印到Chrome控制台

来自分类Dev

将通用数组打印到控制台

来自分类Dev

将Flickr API响应打印到控制台AngularJS

来自分类Dev

使用&,但仍打印到控制台

来自分类Dev

Clion无法打印到控制台

来自分类Dev

将JS乘法表打印到控制台

来自分类Dev

PySpark打印到控制台

来自分类Dev

在 Java 中将字符数组打印到控制台

来自分类Dev

Hamcrest - 打印到控制台

来自分类Dev

PowerShell 不打印到控制台