0

我想编写一个函数,该函数根据用户可以自定义的参数化函数GenString返回一个随机长度的字符串。[0 .. 100]GenChar

也就是说,如果一个用户想要生成一个全a是 s 的字符串,他可以通过传入一个总是返回 的函数来实现a,而另一个用户可以通过传入一个GenChar返回随机希伯来字母的自定义函数来生成随机的希伯来字母单词。

引理 1:我想编写一个函数GenArray,它生成一个传入函数GenThing : sometype返回的任何类型的数组。这可以在 Free Pascal 中完成吗?

引理 2:我正在尝试将QuickCheck移植到 Free Pascal。

4

1 回答 1

7

这是一个例子。因为提到了国际字符,所以使用 Unicode 字符串。

//The functions

type
  TGenChar = function: widechar;

function GenString(MaxLength: integer; GenChar: TGenChar): widestring;
var
  i: integer;
begin
  if MaxLength < 1 then
    MaxLength:= 1; //minimum length is 1
  setlength(result, random(MaxLength+1));
  for i:= 1 to length(result) do
    result[i]:= GenChar;
end;


//The usage example (remember to call randomize somewhere in your program)

var
  SampleCharSet: widestring= 'ABCxyz';

function SampleGenChar: widechar;
begin
  result:= SampleCharSet[random(length(SampleCharSet))+1];
end;

function GetRandomStringSample: widestring;
begin
  result:= GenString(100, SampleGenChar);
end;
于 2012-09-15T01:33:50.007 回答