---
# System prepended metadata

title: Basic Syntax
tags: [Guide To Contibuting]

---

###### tags: `Guide To Contibuting`

# Basic Syntax



BYOND does not use curly braces to section off functions or semicolons to section statements.
Yeah, some of you will love this because you are lazy.
I think this **is** lazy.

In Java:

```java
public class MyClass{
    public static void function(){
        for(int i = 0; i < 5; i++){
            System.out.println(i);        // 0, 1, 2, 3, 4
        }
    }
}
```

In BYOND:

```DM
/datum/my_datum/proc/function()
    for(var/i in 0 to 4)
        world.log << i
```

Convenient, right? And it's faster! As seen here:
![forvariinn](https://file.house/zy7H.png)
Code used for the test in a readable format:
<https://pastebin.com/w50uERkG>

### Advanced topics if you're a nerd

Yes, you can use {}'s and ;'s.
Example:

`#define ONE_LINE_FUNCTION for(var/i in 0 to 4){world.log<<i;other_function(i);}`

Why is this useful? Sometimes when we want to avoid proc-call overhead in super-duper-very-critical high performance areas, we wrap functions into `#define`s. This is less readable, less debuggable, but hey, it's faster.
`#define`'s are ALWAYS one line. If you use `\` to visually separate it to another line, it's still one line in the actual code, the compiler reads it as one line. That's when {}'s and ;'s are required.

## The `\` symbol

`\` makes it so one line is continued on the next if put at the **very end** of a line after a space like this.

```
multi_line_statement = this && that || thing && thong || ayy && lmao \
    hehe && hoho || funny_logic_variable
```
