私はオブジェクト指向のアプローチで Pascal を探求し始めています。現在のオブジェクトへのまたは参照があるかどうか疑問に思っていましたか? ドキュメントを検索しましたが、答えが見つかりませんでした。this
self
編集
試行錯誤の結果、使用できることがわかりましたself
。ここで私の質問は、コンパイラが「重複識別子エラー」をスローせずにこれを達成できるか(以下のスニペット)ですか?
constructor Employee.create(name:String; salary:Real);
begin
self.name := name;
self.salary := salary;
end;
私は2人の従業員を作成し、その情報を表示する以下のプログラムを持っています
{$mode objfpc} // directive to be used for defining classes
{$m+} // directive to be used for using constructor
program EmployeeTest;
type
Employee = class
private
name:String;
salary:Real;
public
constructor create(name:String; salary:Real);
procedure setName(name:String);
function getName():String;
procedure setSalary(salary:Real);
function getSalary():Real;
procedure displayEmployee;
end;
var empl1,empl2:Employee;
constructor Employee.create(name:String; salary:Real);
begin
setName(name);
setSalary(salary);
end;
procedure Employee.setName(name:String);
begin
self.name := name;
end;
procedure Employee.setSalary(salary:Real);
begin
self.salary := salary;
end;
function Employee.getName():String;
begin
getName := self.name;
end;
function Employee.getSalary():Real;
begin
getSalary := self.salary;
end;
procedure Employee.displayEmployee;
begin
writeln('Name: ',getName,', Salary: $',getSalary:0:2);
end;
begin
empl1 := Employee.create('Bob', 75000);
empl2 := Employee.create('Joe', 50000);
empl1.displayEmployee();
empl2.displayEmployee();
readln; {pause}
end.