[]
        
(Showing Draft Content)

GC.Spread.CalcEngine.Functions.Function

类: Function

CalcEngine.Functions.Function

继承关系

Table of contents

构造方法

属性

方法

构造方法

constructor

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

maxArgs: number

函数的最大参数数量


minArgs

minArgs: number

函数的最小参数数量


name

name: string

函数的名称


typeName

typeName: string

支持序列化的类型名称字符串

方法

acceptsArray

acceptsArray(argIndex): boolean

函数是否接收指定参数的数组值

function

参数

属性名 类型 说明
argIndex number 参数的索引

返回值

boolean

true时, 函数接收指定参数的数组值;若为false则不接收


acceptsError

acceptsError(argIndex): boolean

函数是否可以处理错误值

function

参数

属性名 类型 说明
argIndex number 参数的索引

返回值

boolean

true时, 函数可以处理指定参数的错误值;若为 false则不可处理


acceptsMissingArgument

acceptsMissingArgument(argIndex): boolean

Evaluate方法是否可以处理丢失的参数

参数

属性名 类型 说明
argIndex number 参数的索引

返回值

boolean

true时, Evaluate方法可以处理缺失的参数; 如果为false则不可处理


acceptsReference

acceptsReference(argIndex): boolean

函数是否接收指定参数的引用值

function

参数

属性名 类型 说明
argIndex number 参数的索引

返回值

boolean

true时, 函数接收指定参数的引用值;若为 false则不接收


description

description(): IFunctionDescription

返回函数的描述

function

返回值

IFunctionDescription

函数的描述


evaluate

evaluate(...args): any

返回函数作为参数

参数

属性名 类型 说明
...args any 函数求值的参数

返回值

any

应用于参数的函数


findBranchArgument

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

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

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

isContextSensitive(): boolean

确定函数的计算是否依赖于计算的上下文

返回值

boolean

true 时,函数的计算依赖于上下文;若为 false则不依赖


isVolatile

isVolatile(): boolean

确定函数在计算时是否易失

返回值

boolean

true 时,则函数是易失的;若为false则不是