Comments (5)
@graycampbell it's not really possible at the moment I'm afraid. Two consecutive values are treated as an error unless one of them is registered as an operator. It might be possible to fudge it, e.g. by overriding pi
with a postfix operator that multiplies the previous value by pi
, but I'm not sure if that would work for all of your use cases.
from expression.
I also would like to have this. I've got the constants defined for Euler's number & PI:
constants: [
"π": Double.pi,
"ℇ": Darwin.M_E,
],
and would like to have support for 3π.
For Android I use the following library and they support it: https://github.com/ezylang/EvalEx
from expression.
@vanniktech for that particular use-case, you can define them as postfix operators.
EDIT: I tested and can confirm that this works:
let expression = "2π"
let result = try Expression(
expression,
constants: ["π": .pi],
symbols: [.postfix("π"): { $0[0] * .pi }]
).evaluate()
print(result) // 6.28319
from expression.
@graycampbell apologies, it seems I misled you! implicit multiplication is possible, at least for some cases. In addition to the solution for implicit multiplication of constants mentioned above (by using a postfix operator), you can also use the "()" operator to implement implicit multiplication of values in parenthesis, like this:
let expression = "4(5)"
let result = try Expression(
expression,
symbols: [
.infix("()"): { $0[0] * $0[1] }
]
).evaluate()
print(result) // 20
from expression.
This is amazing! Can be closed from my side.
from expression.
Related Issues (20)
- Question: Overloading existing operators HOT 2
- Usage for macOS Apps (Swift 5.1/Xcode 11.2.1) HOT 3
- Equality of strings, substrings and characters HOT 1
- Order of operations question HOT 3
- Square brackets HOT 1
- when using the sample code it won't execute HOT 4
- Expression.parse("'\\n'") fails HOT 2
- AnyExpression using array variables can't be evaluated with error 0 HOT 1
- Expose AST HOT 1
- Test suite crashes on Xcode 13.3 / Swift 5.6 HOT 7
- Ability to use ^ instead of pow(x, y) HOT 4
- Question: Can multiplication be done with parentheses? HOT 1
- Function expression failed with string paramater which contains \ HOT 1
- Crash in Swift 5.7 when creating stringBounds error HOT 4
- Getting sub expressions during evaluation HOT 1
- Lazy evaluation of ternary operator's true/false cases HOT 1
- Support ^ as pow operator HOT 2
- Fact `!` postfix operator does not work HOT 6
- Complex expressions are not working HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from expression.