将模块完全导入到当前作用域中

问题描述 投票:0回答:1

假设我有 2 个单位,

MainUnit
ExampleClass

主机:

Unit MainUnit;

interface

Uses ExampleClass;

function ReturnFive: Integer;

implementation

function ReturnFive: Integer;
begin
  ReturnFive := 5;
end;

begin
end.

示例类:

Unit ExampleClass;

{$mode objfpc}

interface

type 
  ClassThing = Class
    SampleValue: Integer;
  end;
  

implementation

begin
end.

现在,我只想导入

MainUnit
,但仍然能够使用
ClassThing
MainUnit
uses ExampleClass
,但是当您导入
ClassThing
时,
MainUnit
不可用。

我真的不想只是

use
ExampleClass
MainUnit
,我更愿意将其保留在一个
uses
声明中。

你是如何做到这一点的?

scope pascal freepascal
1个回答
1
投票

type ClassThing = ExampleCLass.ClassThing;

在主机界面。

该原理也适用于常量,但仅适用于“真实”常量(而不是更初始化的变量的类型):

const myconst = unitname.myconst;

几乎所有我常用的类型都是类似的别名,这样我就可以轻松地移动它们的定义位置,而无需更改所有业务代码单元中的 use 子句

© www.soinside.com 2019 - 2024. All rights reserved.