Expression

继承: RefCounted < Object

A class that stores an expression you can execute.

描述

An expression can be made of any arithmetic operation, built-in math function call, method call of a passed instance, or built-in type construction call.

An example expression text using the built-in math functions could be sqrt(pow(3, 2) + pow(4, 2)).

In the following example we use a LineEdit node to write our expression and show the result.


    var expression = Expression.new()
    
    func _ready():
        $LineEdit.text_submitted.connect(self._on_text_submitted)
    
    func _on_text_submitted(command):
        var error = expression.parse(command)
        if error != OK:
            print(expression.get_error_text())
            return
        var result = expression.execute()
        if not expression.has_execute_failed():
            $LineEdit.text = str(result)

    private Expression _expression = new Expression();
    
    public override void _Ready()
    {
        GetNode<LineEdit>("LineEdit").TextSubmitted += OnTextEntered;
    }
    
    private void OnTextEntered(string command)
    {
        Error error = _expression.Parse(command);
        if (error != Error.Ok)
        {
            GD.Print(_expression.GetErrorText());
            return;
        }
        Variant result = _expression.Execute();
        if (!_expression.HasExecuteFailed())
        {
            GetNode<LineEdit>("LineEdit").Text = result.ToString();
        }
    }

方法

Variantexecute ( inputs: Array = [], base_instance: Object = null, show_error: bool = true, const_calls_only: bool = false )
Stringget_error_text ( ) const1
boolhas_execute_failed ( ) const1
Errorparse ( expression: String, input_names: PackedStringArray = PackedStringArray() )

方法说明

Variant execute ( inputs: Array = [], base_instance: Object = null, show_error: bool = true, const_calls_only: bool = false )

Executes the expression that was previously parsed by parse and returns the result. Before you use the returned object, you should check if the method failed by calling has_execute_failed.

If you defined input variables in parse, you can specify their values in the inputs array, in the same order.


String get_error_text ( ) const1

Returns the error text if parse or execute has failed.


bool has_execute_failed ( ) const1

Returns true if execute has failed.


Error parse ( expression: String, input_names: PackedStringArray = PackedStringArray() )

Parses the expression and returns an Error code.

You can optionally specify names of variables that may appear in the expression with input_names, so that you can bind them when it gets executed.

2

本方法通常需要用户覆盖才能生效。

1

本方法无副作用,不会修改该实例的任何成员变量。

3

本方法除了能接受在此处描述的参数外,还能够继续接受任意数量的参数。

4

本方法用于构造某个类型。

5

调用本方法无需实例,可直接使用类名进行调用。

6

本方法描述的是使用本类型作为左操作数的有效运算符。

7

这个值是由下列位标志构成位掩码的整数。

8

无返回值。