Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
apex/Salesforce中是否有eval()等价物?_Salesforce_Eval_Apex Code - Fatal编程技术网

apex/Salesforce中是否有eval()等价物?

apex/Salesforce中是否有eval()等价物?,salesforce,eval,apex-code,Salesforce,Eval,Apex Code,我已经对此进行了研究,似乎没有直接相关的函数可用,因为Apex是强类型的,但我想知道是否有人找到了解决方法。我正在设计一个信用风险对象,我的客户希望能够在更新字段时插入诸如“150+3”而不是“153”之类的表达式,以帮助加快处理速度。不幸的是,我是salesforce的新手,所以我很难想出点子。这是否可行?您可以允许手工输入SOQL语句,然后使用动态SOQL来处理它们。但这需要比“150+3”多一点 否则,您可以在JavaScript中执行此操作,并将值作为已计算的数字传递回Apex。可以通过

我已经对此进行了研究,似乎没有直接相关的函数可用,因为Apex是强类型的,但我想知道是否有人找到了解决方法。我正在设计一个信用风险对象,我的客户希望能够在更新字段时插入诸如“150+3”而不是“153”之类的表达式,以帮助加快处理速度。不幸的是,我是salesforce的新手,所以我很难想出点子。这是否可行?

您可以允许手工输入SOQL语句,然后使用动态SOQL来处理它们。但这需要比“150+3”多一点


否则,您可以在JavaScript中执行此操作,并将值作为已计算的数字传递回Apex。

可以通过在工具或Apex API上调用executeAnonymous API方法来模拟Apex中的JavaScript eval()

诀窍是您需要在eval字符串体中传递任何必需的输入参数。如果需要响应,则需要一种机制来提取响应

有两种常见的方法可以从ExecuteAnyMous获得响应

  • 在执行结束时抛出一个故意异常,并包含响应。Kevin在文章中介绍了这种方法
  • 我使用了这种方法的一种变体,但通过调试日志返回响应,而不是故意的异常。看
  • 使用我的示例,顶点将类似于:

    integer sum = soapSforceCom200608Apex.evalInteger(
                    'integer result = 150 + 3; System.debug(LoggingLevel.Error, result);');
    
    您可能无法在成员初始化期间或在构造函数中执行调用


    顺便说一句,是询问Salesforce特定问题的好地方。

    Script.apex可以帮助评估javascript表达式。看看这个。就这么简单


    整数结果=(整数)ScriptEngine.getInstance().eval('1+2')

    好主意。谢谢,我试试看。