# com.rpl.rama.Expr

---

public class Expr extends [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang")

Specifies an expression to be used in an argument position in dataflow code. The expression executes
like a nested [`each`](/content/javadoc/com/rpl/rama/Block.html#each(com.rpl.rama.ops.RamaFunction0)) call that emits one result to [`out`](/content/javadoc/com/rpl/rama/Block.Out.html#out(java.lang.String.../index.html)).

Example: `Block.each(Ops.PLUS, new Expr(Ops.TIMES, 2, 3), 1).out("*res")` computes
`2 * 3 + 1` and stores result in "*res".

See Also:

- [Dataflow documentation](/content/docs/~/tutorial4.html)

## Constructor Summary

### Constructors

| Constructor                                                                                  | Description                                                |
| -------------------------------------------------------------------------------------------- | ---------------------------------------------------------- |
| `Expr(com.rpl.rama.impl.NativeAnyArityRamaOperation op, Object... args)`                   | Constructs an expression for built-in operation that takes any number of arguments |
| `Expr(RamaFunction0<R> op)`                                                                  | Constructs an expression with zero arguments               |
| `Expr(RamaFunction1<T0,R> op, Object arg0)`                                                | Constructs an expression with one argument                |
| `Expr(RamaFunction2<T0,T1,R> op, Object arg0, Object arg1)`                                | Constructs an expression with two arguments               |
| `Expr(RamaFunction3<T0,T1,T2,R> op, Object arg0, Object arg1, Object arg2)`                | Constructs an expression with three arguments             |
| `Expr(RamaFunction4<T0,T1,T2,T3,R> op, Object arg0, Object arg1, Object arg2, Object arg3)`| Constructs an expression with four arguments              |
| `Expr(RamaFunction5<T0,T1,T2,T3,T4,R> op, Object arg0, Object arg1, Object arg2, Object arg3, Object arg4)`| Constructs an expression with five arguments              |
| `Expr(RamaFunction6<T0,T1,T2,T3,T4,T5,R> op, Object arg0, Object arg1, Object arg2, Object arg3, Object arg4, Object arg5)`| Constructs an expression with six arguments              |
| `Expr(RamaFunction7<T0,T1,T2,T3,T4,T5,T6,R> op, Object arg0, Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6)`| Constructs an expression with seven arguments             |
| `Expr(RamaFunction8<T0,T1,T2,T3,T4,T5,T6,T7,R> op, Object arg0, Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7)`| Constructs an expression with eight arguments             |

## Method Summary

### All Methods

| Modifier and Type | Method      | Description        |
| ------------------ | ----------- | ------------------- |
| `List`             | `getArgs()` |                     |
| `Object`          | `getOp()`   |                     |

### Methods inherited from class java.lang. [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang")

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### Expr

public Expr([RamaFunction0](/content/javadoc/com/rpl/rama/ops/RamaFunction0.html "interface in com.rpl.rama.ops"/index.html)<R> op)

Constructs an expression with zero arguments

### Expr

public Expr([RamaFunction1](/content/javadoc/com/rpl/rama/ops/RamaFunction1.html "interface in com.rpl.rama.ops"/index.html)<T0,R> op, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg0)

Constructs an expression with one argument

### Expr

public Expr([RamaFunction2](/content/javadoc/com/rpl/rama/ops/RamaFunction2.html "interface in com.rpl.rama.ops"/index.html)<T0,T1,R> op, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg0, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg1)

Constructs an expression with two arguments

### Expr

public Expr([RamaFunction3](/content/javadoc/com/rpl/rama/ops/RamaFunction3.html "interface in com.rpl.rama.ops"/index.html)<T0,T1,T2,R> op, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg0, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg1, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg2)

Constructs an expression with three arguments

### Expr

public Expr([RamaFunction4](/content/javadoc/com/rpl/rama/ops/RamaFunction4.html "interface in com.rpl.rama.ops"/index.html)<T0,T1,T2,T3,R> op, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg0, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg1, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg2, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg3)

Constructs an expression with four arguments

### Expr

public Expr([RamaFunction5](/content/javadoc/com/rpl/rama/ops/RamaFunction5.html "interface in com.rpl.rama.ops"/index.html)<T0,T1,T2,T3,T4,R> op, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg0, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg1, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg2, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg3, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg4)

Constructs an expression with five arguments

### Expr

public Expr([RamaFunction6](/content/javadoc/com/rpl/rama/ops/RamaFunction6.html "interface in com.rpl.rama.ops"/index.html)<T0,T1,T2,T3,T4,T5,R> op, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg0, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg1, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg2, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg3, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg4, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg5)

Constructs an expression with six arguments

### Expr

public Expr([RamaFunction7](/content/javadoc/com/rpl/rama/ops/RamaFunction7.html "interface in com.rpl.rama.ops"/index.html)<T0,T1,T2,T3,T4,T5,T6,R> op, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg0, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg1, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg2, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg3, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg4, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg5, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg6)

Constructs an expression with seven arguments

### Expr

public Expr([RamaFunction8](/content/javadoc/com/rpl/rama/ops/RamaFunction8.html "interface in com.rpl.rama.ops"/index.html)<T0,T1,T2,T3,T4,T5,T6,T7,R> op, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg0, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg1, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg2, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg3, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg4, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg5, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg6, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") arg7)

Constructs an expression with eight arguments

### Expr

public Expr(com.rpl.rama.impl.NativeAnyArityRamaOperation op, [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang")... args)

Constructs an expression for built-in operation that takes any number of arguments

## Method Details

### getOp

public [Object](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html "class or interface in java.lang") getOp()

### getArgs

public [List](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html "class or interface in java.util") getArgs()
