diff --git a/tutorials/scripting/gdscript/gdscript_basics.rst b/tutorials/scripting/gdscript/gdscript_basics.rst index 5bbf4ec37..022800f38 100644 --- a/tutorials/scripting/gdscript/gdscript_basics.rst +++ b/tutorials/scripting/gdscript/gdscript_basics.rst @@ -340,29 +340,33 @@ The following is the list of supported operators and their precedence. Literals ~~~~~~~~ -+--------------------------+-------------------------------------------+ -| **Literal** | **Type** | -+--------------------------+-------------------------------------------+ -| ``45`` | Base 10 integer | -+--------------------------+-------------------------------------------+ -| ``0x8f51`` | Base 16 (hexadecimal) integer | -+--------------------------+-------------------------------------------+ -| ``0b101010`` | Base 2 (binary) integer | -+--------------------------+-------------------------------------------+ -| ``3.14``, ``58.1e-10`` | Floating-point number (real) | -+--------------------------+-------------------------------------------+ -| ``"Hello"``, ``'Hi'`` | Strings | -+--------------------------+-------------------------------------------+ -| ``"""Hello"""`` | Multiline string | -+--------------------------+-------------------------------------------+ -| ``&"name"`` | :ref:`StringName ` | -+--------------------------+-------------------------------------------+ -| ``^"Node/Label"`` | :ref:`NodePath ` | -+--------------------------+-------------------------------------------+ -| ``$NodePath`` | Shorthand for ``get_node("NodePath")`` | -+--------------------------+-------------------------------------------+ -| ``%UniqueNode`` | Shorthand for ``get_node("%UniqueNode")`` | -+--------------------------+-------------------------------------------+ ++---------------------------------+-------------------------------------------+ +| **Literal** | **Type** | ++---------------------------------+-------------------------------------------+ +| ``45`` | Base 10 integer | ++---------------------------------+-------------------------------------------+ +| ``0x8f51`` | Base 16 (hexadecimal) integer | ++---------------------------------+-------------------------------------------+ +| ``0b101010`` | Base 2 (binary) integer | ++---------------------------------+-------------------------------------------+ +| ``3.14``, ``58.1e-10`` | Floating-point number (real) | ++---------------------------------+-------------------------------------------+ +| ``"Hello"``, ``'Hi'`` | Regular strings | ++---------------------------------+-------------------------------------------+ +| ``"""Hello"""``, ``'''Hi'''`` | Triple-quoted regular strings | ++---------------------------------+-------------------------------------------+ +| ``r"Hello"``, ``r'Hi'`` | Raw strings | ++---------------------------------+-------------------------------------------+ +| ``r"""Hello"""``, ``r'''Hi'''`` | Triple-quoted raw strings | ++---------------------------------+-------------------------------------------+ +| ``&"name"`` | :ref:`StringName ` | ++---------------------------------+-------------------------------------------+ +| ``^"Node/Label"`` | :ref:`NodePath ` | ++---------------------------------+-------------------------------------------+ +| ``$NodePath`` | Shorthand for ``get_node("NodePath")`` | ++---------------------------------+-------------------------------------------+ +| ``%UniqueNode`` | Shorthand for ``get_node("%UniqueNode")`` | ++---------------------------------+-------------------------------------------+ Integers and floats can have their numbers separated with ``_`` to make them more readable. The following ways to write numbers are all valid:: @@ -372,6 +376,63 @@ The following ways to write numbers are all valid:: 0x8080_0000_ffff # Equal to 0x80800000ffff. 0b11_00_11_00 # Equal to 0b11001100. +**Regular string literals** can contain the following escape sequences: + ++---------------------+---------------------------------+ +| **Escape sequence** | **Expands to** | ++---------------------+---------------------------------+ +| ``\n`` | Newline (line feed) | ++---------------------+---------------------------------+ +| ``\t`` | Horizontal tab character | ++---------------------+---------------------------------+ +| ``\r`` | Carriage return | ++---------------------+---------------------------------+ +| ``\a`` | Alert (beep/bell) | ++---------------------+---------------------------------+ +| ``\b`` | Backspace | ++---------------------+---------------------------------+ +| ``\f`` | Formfeed page break | ++---------------------+---------------------------------+ +| ``\v`` | Vertical tab character | ++---------------------+---------------------------------+ +| ``\"`` | Double quote | ++---------------------+---------------------------------+ +| ``\'`` | Single quote | ++---------------------+---------------------------------+ +| ``\\`` | Backslash | ++---------------------+---------------------------------+ +| ``\uXXXX`` | UTF-16 Unicode codepoint | +| | ``XXXX`` | +| | (hexadecimal, case-insensitive) | ++---------------------+---------------------------------+ +| ``\UXXXXXX`` | UTF-32 Unicode codepoint | +| | ``XXXXXX`` | +| | (hexadecimal, case-insensitive) | ++---------------------+---------------------------------+ + +There are two ways to represent an escaped Unicode character above ``0xFFFF``: + +- as a `UTF-16 surrogate pair `_ ``\uXXXX\uXXXX``. +- as a single UTF-32 codepoint ``\UXXXXXX``. + +Also, using ``\`` followed by a newline inside a string will allow you to continue it in the next line, +without inserting a newline character in the string itself. + +A string enclosed in quotes of one type (for example ``"``) can contain quotes of another type +(for example ``'``) without escaping. Triple-quoted strings allow you to avoid escaping up to +two consecutive quotes of the same type (unless they are adjacent to the string edges). + +**Raw string literals** always encode the string as it appears in the source code. +This is especially useful for regular expressions. Raw strings do not process escape sequences, +but you can "escape" a quote or backslash (they replace themselves). + +:: + + print("\tchar=\"\\t\"") # Prints ` char="\t"`. + print(r"\tchar=\"\\t\"") # Prints `\tchar=\"\\t\"`. + +GDScript also supports :ref:`format strings `. + Annotations ~~~~~~~~~~~ @@ -535,49 +596,6 @@ Note: Currently, data structures such as ``Vector2``, ``Vector3``, and ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ A sequence of characters in `Unicode format `_. -String literals can contain the following escape sequences: - -+---------------------+---------------------------------+ -| **Escape sequence** | **Expands to** | -+---------------------+---------------------------------+ -| ``\n`` | Newline (line feed) | -+---------------------+---------------------------------+ -| ``\t`` | Horizontal tab character | -+---------------------+---------------------------------+ -| ``\r`` | Carriage return | -+---------------------+---------------------------------+ -| ``\a`` | Alert (beep/bell) | -+---------------------+---------------------------------+ -| ``\b`` | Backspace | -+---------------------+---------------------------------+ -| ``\f`` | Formfeed page break | -+---------------------+---------------------------------+ -| ``\v`` | Vertical tab character | -+---------------------+---------------------------------+ -| ``\"`` | Double quote | -+---------------------+---------------------------------+ -| ``\'`` | Single quote | -+---------------------+---------------------------------+ -| ``\\`` | Backslash | -+---------------------+---------------------------------+ -| ``\uXXXX`` | UTF-16 Unicode codepoint | -| | ``XXXX`` | -| | (hexadecimal, case-insensitive) | -+---------------------+---------------------------------+ -| ``\UXXXXXX`` | UTF-32 Unicode codepoint | -| | ``XXXXXX`` | -| | (hexadecimal, case-insensitive) | -+---------------------+---------------------------------+ - -There are two ways to represent an escaped Unicode character above 0xFFFF: - -- as a `UTF-16 surrogate pair `_ ``\uXXXX\uXXXX``. -- as a single UTF-32 codepoint ``\UXXXXXX``. - -Also, using ``\`` followed by a newline inside a string will allow you to continue it in the next line, without -inserting a newline character in the string itself. - -GDScript also supports :ref:`format strings `. :ref:`StringName ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^