工具函数
元代码
支持通过以下函数生成类中定义的方法调用元代码:
-
objCall(obj, methodName, args...): -
unifiedObjCall(obj, methodName, args) -
makeObjCall(obj, methodName, args...) -
makeUnifiedObjCall(obj, methodName, args)
其中:
-
obj 为 OOP 对象。
-
methodName 是一个字符串,表示方法名称。
-
第1和第3个函数中的 args... 是传入的参数。
-
第2和第4个函数中的 args 是元组,表示传入的参数。
示例
利用
makeObjCall 函数创建 OOP
方法调用的元代码:class Employee {
name :: STRING
salary :: DOUBLE
department :: STRING
def Employee(name_, salary_, dept_) {
name = name_
salary = salary_
department = dept_
}
def updateInfo(newSalary,newDepartment) {
salary = newSalary
department = newDepartment
return "Salary updated to $" + string(salary) + ", and department updated to " + department
}
def getInfo(includeDetails) {
return iif(includeDetails,
name + " - " + department + " - $" + string(salary),
name + " - " + department)
}
}
// 创建员工对象
emp = Employee("Alice", 50000.0, "Department1")
// 使用 objCall 方法
objCall(emp, "getInfo", true)
// 使用 unifiedObjCall 方法
unifiedObjCall(emp, "updateInfo", (55000.0,"Department2"))
// 使用 makeObjCall 方法
makeObjCall(emp, "updateInfo", 60000.0,"Department3").eval()
// 使用 makeUnifiedObjCall 方法
makeUnifiedObjCall(emp, "updateInfo", (65000.0,"Department4")).eval()其它工具函数
-
isInstanceOf(obj, cls):obj 为 OOP 对象,cls 为类。
该函数用于检查对象是否为特定类或该类的子类实例,返回一个布尔值。
class B {
def B() {}
}
class D : B {
def D() {}
}
class A {
def A() {}
}
d = D()
isInstanceOf(d, D) // true
isInstanceOf(d, B) // true
isInstanceOf(d, A) // false-
setAttr(obj, attrName, value):obj 为 OOP 对象;attrName 为要设置的属性名称;value 为要设置的属性值。
该函数用于设置或修改对象的属性值。例如 setAttr(obj, `alpha, 16) 或者
obj.setAttr(`alpha, 16)。
