Update operators.md

fix typos #107
This commit is contained in:
Ivan Shalganov 2014-08-23 12:23:04 +04:00
parent 0be8b15d68
commit b3992033c9

View File

@ -7,7 +7,7 @@
* `-$a` - отрицание знака, смена знака `$a`.
* `$a + $b` - сложение, сумма `$a` и `$b`.
* `$a - $b` - вычитаение, разность `$a` и `$b`.
* `$a - $b` - вычитание, разность `$a` и `$b`.
* `$a * $b` - умножение, произведение `$a` и `$b`.
* `$a / $b` - деление, частное от деления `$a` на `$b`.
* `$a % $b` - деление по модулю, целочисленный остаток от деления `$a` на `$b`.
@ -64,13 +64,13 @@
| Тип операнда 1 | Тип операнда 2 | Результат |
|-------------------|-------------------|-----------|
| null или string | string | NULL преобразуется в "", числовое или лексическое сравнение |
| bool или null | что угодно | Преобразуется в bool, FALSE < TRUE |
| object | object | Встроенные классы могут определять свои собственные правила сравнения, объекты разных классов не сравниваются, объекты одного класса - сравниваются свойства тем же способом, что и в массивах |
| string или number | string или number | Строки переводятся в числа, обычная математика |
| array | array | Массивы с меньшим числом элементов считаются меньше, если ключ из первого операнда не найден во втором операнде - массивы не могут сравниваться, иначе идет сравнение соответствующих значений |
| object | что угодно | object всегда больше |
| array | что угодно | array всегда больше |
| null или строка | строка | NULL преобразуется в "", числовое или лексическое сравнение |
| булев или null | что угодно | Преобразуется в bool, FALSE < TRUE |
| объект | объект | Встроенные классы могут определять свои собственные правила сравнения, объекты разных классов не сравниваются, объекты одного класса - сравниваются свойства тем же способом, что и в массивах |
| строка или число | строка или число | Строки переводятся в числа, обычная математика |
| массив | массив | Массивы с меньшим числом элементов считаются меньше, если ключ из первого операнда не найден во втором операнде - массивы не могут сравниваться, иначе идет сравнение соответствующих значений |
| объект | что угодно | object всегда больше |
| массим | что угодно | array всегда больше |
### Побитовые операторы
@ -129,7 +129,7 @@ Fenom поддерживает префиксные и постфиксные о
### Строковый оператор
Оператор конкатенации `~` возвращает строку, представляющую собой соединение левого и правого аргумента.
Оператор объединения `~` возвращает строку, представляющую собой соединение левого и правого аргумента.
`$a ~ $b` - возвращает результат объединения сток `$a` и `$b`
@ -175,7 +175,7 @@ Fenom поддерживает префиксные и постфиксные о
{$request.action !: 'default'}
```
Как видно, оператор `:?` более расширенный чем `:!` и включает в себя функциональность опертора `!:`.
Как видно, оператор `:?` более расширенный чем `:!` и включает в себя функциональность оператора `!:`.
Для упрощения понимания можно подвести итог:
@ -194,7 +194,7 @@ Fenom поддерживает префиксные и постфиксные о
### Операторы проверки
Оператор проверки это упрощенный тернарный оператор от которого осталась только часть проверки без возвращаемых вариантов.
Суть операторов — быстро произвести проверку на не пустое занчение и существование пременной.
Суть операторов — быстро произвести проверку на не пустое значение и существование пременной.
* `$a?` - вернет `TRUE` если `$a` не пустое
* `$a!` - вернет `TRUE` если `$a` существует
@ -206,7 +206,7 @@ Fenom поддерживает префиксные и постфиксные о
### Оператор тестирования
Оператор `is` производит тесты над перменными или выражением. Левый операнд считается тестируемым, а правый операнд — название теста:
Оператор `is` производит тесты над переменными или выражением. Левый операнд считается тестируемым, а правый операнд — название теста:
```smarty
{* проверка переменной на не четность *}
@ -217,7 +217,7 @@ Fenom поддерживает префиксные и постфиксные о
Результат тестирования может быть инвертирован с помощью `is not` оператора:
```smarty
{* проверяем переменную что ее значение не явдяется числом *}
{* проверяем переменную что ее значение не является числом *}
{$a is not integer}
```
@ -234,7 +234,7 @@ Fenom поддерживает префиксные и постфиксные о
* `string` — строка
* `callback`, `callable` — функция
* `number`, `numeric` — число, в общем понимании
* `$a is iterable` - тестирует переменную на возможность итеративного обхода.
* `$a is iterable` - тестирует переменную на возможность итеративного обхода (для `foreach`).
* `$a is template` - переменная `$a` содержит название существующего шаблона.
* `$a is empty` - переменная пустая.
* `$a is set` - переменная существует.
@ -245,7 +245,7 @@ Fenom поддерживает префиксные и постфиксные о
### Оператор присутствия
Оператор `in` проверяет присутвие скалярного значения слева в массиве или строке справа.
Оператор `in` проверяет присутствие скалярного значения слева в массиве или строке справа.
Результат тестирования может быть инвертирован с помощью `not ni` оператора.
* `$a in list $b` - значение `$a` содержится в массиве значений `$b`
@ -253,10 +253,10 @@ Fenom поддерживает префиксные и постфиксные о
* `$a in string $b` - значение `$a` содержится в `$b` как подстрока.
* `$a in $b` - значение `$a` содержится в `$b`, где `$b` может быть строкой, обычным или ассоциативным массивом.
Этот вариант долгий так как требуется проверить типы переменной `$b`.
Однако если вместо $b явно задан массив иили строка то оператор сам адаптируется для быстрого поиска.
Однако если вместо $b явно задан массив или строка то оператор сам адаптируется для быстрого поиска.
```smarty
{'df' in 'abcdefg'}
{5 in [1, 5, 25, 125]}
{99 in keys [1, 5, 25, 99 => 125]}
```
```