diff --git a/_gitbook/syntax_and_semantics/assignment.md b/_gitbook/syntax_and_semantics/assignment.md index bce4180..4ac52ac 100755 --- a/_gitbook/syntax_and_semantics/assignment.md +++ b/_gitbook/syntax_and_semantics/assignment.md @@ -1,67 +1,67 @@ -# Assignment +# Присваивание -Assignment is done with the equal (`=`) character. +Присваивание выполняется в помощью литерала присваивания (`=`). ```crystal -# Assigns to a local variable +# Присваивание локальной переменной local = 1 -# Assigns to an instance variable +# Присваивание переменной объекта @instance = 2 -# Assigns to a class variable +# Присваивание переменной класса @@class = 3 -# Assigns to a global variable +# Присваивание глобальной переменной $global = 4 ``` -Each of the above kinds of variables will be explained later on. +Все эти типы переменных будут объяснены позже. -Some syntax sugar that contains the `=` character is available: +Также доступны другие операторы, содержащие в себе операцию присваивания `=` и являющиеся синтаксическим сахаром: ```crystal -local += 1 # same as: local = local + 1 +local += 1 # то же, что и: local = local + 1 -# The above is valid with these operators: +# выполняется также и для этих операторов: # +, -, *, /, %, |, &, ^, **, <<, >> -local ||= 1 # same as: local || (local = 1) -local &&= 1 # same as: local && (local = 1) +local ||= 1 # то же, что и: local || (local = 1) +local &&= 1 # то же, что и: local && (local = 1) ``` -A method invocation that ends with `=` has syntax sugar: +Способ вызова, заканчивающийся литералом присваивания `=` также имеет синтаксический сахар: ```crystal -# A setter +# Сеттер person.name=("John") -# The above can be written as: +# что может быть записано так: person.name = "John" -# An indexed assignment +# присваивание элементу массива objects.[]=(2, 3) -# The above can be written as: +# аналогично этому: objects[2] = 3 -# Not assignment-related, but also syntax sugar: +# не связано с присваиванием, но тоже синтаксический сахар: objects.[](2, 3) -# The above can be written as: +# то же, что и: objects[2, 3] ``` -The `=` operator syntax sugar is also available to setters and indexers. Note that `||` and `&&` use the `[]?` method to check for key prescence. +Обратите внимание, что операторы `||` и `&&` используют метод `[]?` для проверки присутствия ключа. ```crystal -person.age += 1 # same as: person.age = person.age + 1 +person.age += 1 # то же, что и: person.age = person.age + 1 -person.name ||= "John" # same as: person.name || (person.name = "John") -person.name &&= "John" # same as: person.name && (person.name = "John") +person.name ||= "John" # то же, что и: person.name || (person.name = "John") +person.name &&= "John" # то же, что и: person.name && (person.name = "John") -objects[1] += 2 # same as: objects[1] = objects[1] + 2 +objects[1] += 2 # то же, что и: objects[1] = objects[1] + 2 -objects[1] ||= 2 # same as: objects[1]? || (objects[1] = 2) -objects[1] &&= 2 # same as: objects[1]? && (objects[1] = 2) +objects[1] ||= 2 # то же, что и: objects[1]? || (objects[1] = 2) +objects[1] &&= 2 # то же, что и: objects[1]? && (objects[1] = 2) ``` diff --git a/_gitbook/syntax_and_semantics/multiple_assignment.md b/_gitbook/syntax_and_semantics/multiple_assignment.md index bc99966..5ae1271 100755 --- a/_gitbook/syntax_and_semantics/multiple_assignment.md +++ b/_gitbook/syntax_and_semantics/multiple_assignment.md @@ -1,18 +1,18 @@ -# Multiple assignment +# Множественное присваивание -You can declare/assign multiple variables at the same time by separating expressions with a comma (`,`): +Вы можете объявить несколько переменных одновременно, разделяя выражения запятой (`,`): ```crystal name, age = "Crystal", 1 -# The above is the same as this: +# то же, что и: temp1 = "Crystal" temp2 = 1 name = temp1 age = temp2 ``` -Note that because expressions are assigned to temporary variables it is possible to exchange variables’ contents in a single line: +Обратите внимание, так как выражения присваиваются временным переменным, можно обменять содержимое переменных в одну строку: ```crystal a = 1 @@ -22,45 +22,45 @@ a #=> 2 b #=> 1 ``` -If the right-hand side contains just one expression, it is considered an indexed type and the following syntax sugar applies: +Если правая часть содержит только одно выражение, то оно будет считаться индексным: ```crystal name, age, source = "Crystal,1,github".split(",") -# The above is the same as this: +# то же, что и: temp = "Crystal,1,github".split(",") name = temp[0] age = temp[1] source = temp[2] ``` -If the left-hand side contains just one variable, the right-hand side is considered an array: +Если левая часть содержит одну переменную, то правая часть будет считаться массивом: ```crystal names = "John", "Peter", "Jack" -# The above is the same as: +# то же, что и: names = ["John", "Peter", "Jack"] ``` -Multiple assignment is also available to methods that end with `=`: +Множественное присваивание также доступно для методов, которые оканчиваются на `=`: ```crystal person.name, person.age = "John", 32 -# Same as: +# то же, что и: temp1 = "John" temp2 = 32 person.name = temp1 person.age = temp2 ``` -And it is also available to indexers (`[]=`): +А также доступно индексным выражениям (`[]=`): ```crystal objects[1], objects[2] = 3, 4 -# Same as: +# то же, что и: temp1 = 3 temp2 = 4 objects[1] = temp1