[]
CalcEngine.Functions.Function
Function
• new Function(name
, minArgs?
, maxArgs?
, functionDescription?
)
用于定义函数的抽象基类
代码示例
class FactorialFunction extends GC.Spread.CalcEngine.Functions.Function {
constructor () {
super('FACTORIAL', 1, 1, {
description: "Function to calculate the Fibonacci number.",
parameters: [{ name: 'n' }]
});
}
evaluate (n) {
var fib = [0, 1];
for (var i = 2; i <= n; i++) {
fib[i] = fib[i - 1] + fib[i - 2];
}
return fib[n];
}
}
spread.addCustomFunction(new FactorialFunction());
spread.getActiveSheet().setFormula(0, 0, '=FACTORIAL(10)');
属性名 | 类型 | 说明 |
---|---|---|
name |
string |
函数的名称 |
minArgs? |
number |
函数的最大参数数量 |
maxArgs? |
number |
函数的最小参数数量 |
functionDescription? |
IFunctionDescription |
- |
• maxArgs: number
函数的最大参数数量
• minArgs: number
函数的最小参数数量
• name: string
函数的名称
• typeName: string
支持序列化的类型名称字符串
▸ acceptsArray(argIndex
): boolean
函数是否接收指定参数的数组值
function
属性名 | 类型 | 说明 |
---|---|---|
argIndex |
number |
参数的索引 |
boolean
为true
时, 函数接收指定参数的数组值;若为false
则不接收
▸ acceptsError(argIndex
): boolean
函数是否可以处理错误值
function
属性名 | 类型 | 说明 |
---|---|---|
argIndex |
number |
参数的索引 |
boolean
为true
时, 函数可以处理指定参数的错误值;若为 false
则不可处理
▸ acceptsMissingArgument(argIndex
): boolean
Evaluate方法是否可以处理丢失的参数
属性名 | 类型 | 说明 |
---|---|---|
argIndex |
number |
参数的索引 |
boolean
为true
时, Evaluate方法可以处理缺失的参数; 如果为false
则不可处理
▸ acceptsReference(argIndex
): boolean
函数是否接收指定参数的引用值
function
属性名 | 类型 | 说明 |
---|---|---|
argIndex |
number |
参数的索引 |
boolean
为true
时, 函数接收指定参数的引用值;若为 false
则不接收
▸ description(): IFunctionDescription
返回函数的描述
function
函数的描述
▸ evaluate(...args
): any
返回函数作为参数
属性名 | 类型 | 说明 |
---|---|---|
...args |
any |
函数求值的参数 |
any
应用于参数的函数
▸ findBranchArgument(test
): number
查找分支参数
代码示例
function EqualsFunction() {
this.name = 'Equals';
this.maxArgs = 3;
this.minArgs = 3;
}
EqualsFunction.prototype = new GC.Spread.CalcEngine.Functions.Function();
EqualsFunction.prototype.evaluate = function(logicalTest, valueIfTrue, valueIfFalse) {
return logicalTest ? valueIfTrue : valueIfFalse;
}
EqualsFunction.prototype.isBranch = function() {
return true;
}
EqualsFunction.prototype.findTestArgument = function() {
return 0;
}
EqualsFunction.prototype.findBranchArgument = function(logicalTestResult) {
if (logicalTestResult === true) {
return 1;
}
return 2;
}
var equalsFunction = new EqualsFunction();
var spread = GC.Spread.Sheets.findControl("ss") || GC.Spread.Sheets.findControl("sampleDiv");
spread.addCustomFunction(equalsFunction);
属性名 | 类型 | 说明 |
---|---|---|
test |
any |
测试 |
number
将作为分支条件的参数的索引
▸ findTestArgument(): number
在分支此函数时查找测试参数
代码示例
function EqualsFunction() {
this.name = 'Equals';
this.maxArgs = 3;
this.minArgs = 3;
}
EqualsFunction.prototype = new GC.Spread.CalcEngine.Functions.Function();
EqualsFunction.prototype.evaluate = function(logicalTest, valueIfTrue, valueIfFalse) {
return logicalTest ? valueIfTrue : valueIfFalse;
}
EqualsFunction.prototype.isBranch = function() {
return true;
}
EqualsFunction.prototype.findTestArgument = function() {
return 0;
}
EqualsFunction.prototype.findBranchArgument = function(logicalTestResult) {
if (logicalTestResult === true) {
return 1;
}
return 2;
}
var equalsFunction = new EqualsFunction();
var spread = GC.Spread.Sheets.findControl("ss") || GC.Spread.Sheets.findControl("sampleDiv");
spread.addCustomFunction(equalsFunction);
number
将被视为测试条件的参数索引
▸ isBranch(): boolean
获取表示此函数是否由参数作为条件分支的值
代码示例
function EqualsFunction() {
this.name = 'Equals';
this.maxArgs = 3;
this.minArgs = 3;
}
EqualsFunction.prototype = new GC.Spread.CalcEngine.Functions.Function();
EqualsFunction.prototype.evaluate = function(logicalTest, valueIfTrue, valueIfFalse) {
return logicalTest ? valueIfTrue : valueIfFalse;
}
EqualsFunction.prototype.isBranch = function() {
return true;
}
EqualsFunction.prototype.findTestArgument = function() {
return 0;
}
EqualsFunction.prototype.findBranchArgument = function(logicalTestResult) {
if (logicalTestResult === true) {
return 1;
}
return 2;
}
var equalsFunction = new EqualsFunction();
var spread = GC.Spread.Sheets.findControl("ss") || GC.Spread.Sheets.findControl("sampleDiv");
spread.addCustomFunction(equalsFunction);
boolean
为true
时,该实例是分支;若 false
则不是
▸ isContextSensitive(): boolean
确定函数的计算是否依赖于计算的上下文
boolean
为true
时,函数的计算依赖于上下文;若为 false
则不依赖
▸ isVolatile(): boolean
确定函数在计算时是否易失
boolean
为true
时,则函数是易失的;若为false
则不是