Я изучил это, и кажется, что нет прямой связанной функции, поскольку Apex настолько сильно набрана, но мне было интересно, нашел ли кто-нибудь обходной путь. Я разрабатываю объект кредитного риска, и мой клиент хочет иметь возможность добавлять выражения, такие как «150 + 3» вместо «153» при обновлении полей, чтобы ускорить работу с ее конца. К сожалению, я новичок в salesforce, поэтому у меня возникают проблемы с идеями. Возможно ли это?Есть ли эквивалент eval() в вершине/Salesforce?
ответ
Вы можете разрешить ввод команд SOQL вручную, а затем использовать динамический SOQL для их обработки. Но для этого потребуется немного больше, чем «150 + 3».
В противном случае вы можете сделать это в JavaScript и передать значение обратно в Apex как уже рассчитанное число.
Можно воспроизвести Javascript eval() в Apex, сделав выноску метода executeAnonymous API либо в Инструментах, либо в API Apex.
Фокус в том, что вам нужно передать любые требуемые входные параметры в тело элемента eval. Если требуется ответ, вам нужен механизм для его извлечения.
Существует два распространенных способа ответа от executeAnonymous.
- Выведите преднамеренное исключение в конце выполнения и включите ответ. Кевин использует этот подход в EVAL() in Apex. Secure Dynamic Code Evaluation on the Salesforce1 Platform.
- Я использовал вариант этого подхода, но возвратил ответ через журнал отладки, а не преднамеренное исключение. См. Adding Eval() support to Apex.
Используя мой пример апекса будет что-то вроде:
integer sum = soapSforceCom200608Apex.evalInteger(
'integer result = 150 + 3; System.debug(LoggingLevel.Error, result);');
Вы не могли бы быть в состоянии выполнить выноски при инициализации члена или в конструкторе.
Кстати, Salesforce Stackexchange site - отличное место, чтобы задать конкретные вопросы Salesforce.
Ты рок! Никогда не было известно, что это возможно в Apex !!!! У вас есть мой голос! – Patlatus
- 1. Есть ли эквивалент eval() в jQuery?
- 2. Эквивалент eval() в Groovy
- 3. Есть ли эквивалент C/C++ для eval ("function (arg1, arg2)")?
- 4. F # эквивалент Eval
- 5. r эквивалент matlab eval
- 6. ActionScript эквивалент «eval»
- 7. Эквивалент python eval в Haskell
- 8. Есть ли ⇧ есть эквивалент?
- 9. Есть ли эквивалент super.super()?
- 10. Есть ли эквивалент! $ В powershell?
- 11. Есть ли функция eval() в Java?
- 12. PHP: Эквивалент включают использование Eval
- 13. Есть ли эквивалентная функция eval vb.net для vbscript eval
- 14. Есть ли эквивалент Windows `openat`?
- 15. Есть ли .gemrc.local или эквивалент?
- 16. Нэнси: есть ли эквивалент Server.MapPath ("~ /")?
- 17. Есть ли неблокирующий эквивалент JavaPlot.plot()?
- 18. Есть ли эквивалент F # Enumerable.DefaultIfEmpty?
- 19. Есть ли сетевой эквивалент степпера?
- 20. Есть ли Silverlight эквивалент «Application.OpenForms»?
- 21. Есть ли метеорный эквивалент cordova.exec?
- 22. Есть ли эквивалент Matlab Rscript?
- 23. Есть ли двоичный эквивалент System.Text.StringBuilder?
- 24. Есть ли .NET-эквивалент WebGoat
- 25. Есть ли dot42 эквивалент System.Net.Sockets.UdpClient?
- 26. Есть ли эквивалент Scala петапоко?
- 27. Есть ли эквивалент Tornado SimpleHTTPServer?
- 28. Есть ли PHP эквивалент функции()
- 29. Есть ли RichTextBox эквивалент ListBox.ItemTemplate?
- 30. Есть ли эквивалент silverlight response.redirect?
Отличная идея. Спасибо, я попробую. – grantb747