Files
carbon-lang/docs/design/control_flow/conditionals.md
T
Aadarsh Raj 4e9e43a109 some issues in readme-file, replacing orange with apple (#2656)
**### There is issue in conditionals.md readme file** 
**In example of fruits conditionals** 
                            **there are fruits.IsGreen() if it is False then continue. 
                            if it is True then print "Apple" but in readme file there is "Orange"** 


I replaced "Orange" with "Apple" because in example there is "Apple" 
                    ```carbon
                                if (fruit.IsYellow()) {
                                  Print("Banana!");
                                } else if (fruit.IsOrange()) {
                                  Print("Orange!");
                                } else if (fruit.IsGreen()) {
                                  Print("Apple!");
                                } else {
                                  Print("Vegetable!");
                                }
                       fruit.Eat();
                        ```
2023-03-06 08:43:13 -08:00

85 lines
2.4 KiB
Markdown

# Conditionals
<!--
Part of the Carbon Language project, under the Apache License v2.0 with LLVM
Exceptions. See /LICENSE for license information.
SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-->
<!-- toc -->
## Table of contents
- [Overview](#overview)
- [Alternatives considered](#alternatives-considered)
- [References](#references)
<!-- tocstop -->
## Overview
`if` and `else` provide conditional execution of statements. Syntax is:
> `if (`_boolean expression_ `) {` _statements_ `}`
>
> [ `else if (` _boolean expression_ `) {` _statements_ `}` ] ...
>
> [ `else {` _statements_ `}` ]
Only one group of statements will execute:
- When the first `if`'s boolean expression evaluates to true, its associated
statements will execute.
- When earlier boolean expressions evaluate to false and an `else if`'s
boolean expression evaluates to true, its associated statements will
execute.
- `... else if ...` is equivalent to `... else { if ... }`, but without
visible nesting of braces.
- When all boolean expressions evaluate to false, the `else`'s associated
statements will execute.
When a boolean expression evaluates to true, no later boolean expressions will
evaluate.
Note that `else if` may be repeated.
For example:
```carbon
if (fruit.IsYellow()) {
Print("Banana!");
} else if (fruit.IsOrange()) {
Print("Orange!");
} else if (fruit.IsGreen()) {
Print("Apple!");
} else {
Print("Vegetable!");
}
fruit.Eat();
```
This code will:
- Evaluate `fruit.IsYellow()`:
- When `True`, print `Banana!` and resume execution at `fruit.Eat()`.
- When `False`, evaluate `fruit.IsOrange()`:
- When `True`, print `Orange!` and resume execution at `fruit.Eat()`.
- When `False`, evaluate `fruit.IsGreen()`:
- When `True`, print `Apple!` and resume execution at
`fruit.Eat()`.
- When `False`, print `Vegetable!` and resume execution at
`fruit.Eat()`.
## Alternatives considered
- [Optional braces](/proposals/p0623.md#optional-braces)
- [Optional parentheses](/proposals/p0623.md#optional-parentheses)
- [`elif`](/proposals/p0623.md#elif)
## References
- Proposal
[#285: `if` and `else`](https://github.com/carbon-language/carbon-lang/pull/285)
- Proposal
[#623: Require braces](https://github.com/carbon-language/carbon-lang/pull/623)