Free Pascal中的通用嵌套类函数

时间:2018-03-27 23:17:43

标签: freepascal

我尝试编写以下内容,看看我是否可以通过结合对泛型类函数和嵌套类的支持来模拟Free Pascal 3中的泛型方法:

{$mode delphi}
type TFoo = class
  public
    type TBar<T> = class
      class function Min(const A, B: T): T;
    end;
end;
class function TFoo.TBar<T>.Min(const A, B: T): T;
begin
  if A < B then
    Result := A
  else
    Result := B;
end;

我尝试了几种语法变体,但无论如何我都无法编译。在这种形式中,编译器在第8行(method identifier expectedSyntax error, ";" expected but "<" found)上给出了致命错误。

如果可能的话,这个的正确语法是什么?

1 个答案:

答案 0 :(得分:0)

fpc 3.0.4中的正确且有效的语法,至少在objfpc模式下(未测试模式delphi):

#include <iostream>
using namespace std;

bool isSortedInAscendingOrder(int list[]);

const int size = 5; // Set this to 2000 again if you want

int main()
{
    int i;
    int list[size];
    for (i = 0; i < size; i++)
    {
        int j = 0;
        while(j <= 0)
        {
            cin >> j;
            if(j <= 0)
                cout << "rejected as equal or smaller zero" << endl;
        }
        list[i] = j;
    }
    if (isSortedInAscendingOrder(list))
        cout << "sorted" << endl;
    else
        cout << "unsorted" << endl;

    return 0;
}

bool isSortedInAscendingOrder(int list[])
{
    for (int i = 0; i < size -1; i++)
    {
        if (list[i] > list[i + 1])
        {
            return false;
        }
    }
    return true;
}