Я хочу знать, как я могу объявить несколько переменных. Я напечатал
a,b=1
ожидал получитьa=1,b=1
, но я получил:Как объявить несколько переменныхa,b=1 a #=> 1 b #=> nil
Как я могу это сделать?
После этого кода я сделал:
a="Hello " b=a c="World~" b << c b #=> "Hello World"
Почему
b
так же, какa
значение «s?
ответ
Чтобы объявить несколько ВАР на одной и той же линии, вы можете сделать это:
a = b = "foo"
puts a # return "foo"
puts b # return "foo" too
О втором вопросе, при выполнении b << c
, вы присваиваете значение c
«s к b
. Затем вы переопределяете предыдущее значение, хранящееся в b
. Между тем, a
сохраняет одно и то же значение, поскольку Ruby не является указателем пользователя.
То, что вы делаете, называется назначением деструктурирования. В принципе, вы берете то, что находится на правой стороне знака равенства, и разрушаете его, или разбиваете на части, а затем назначаете каждый раздел каждой соответствующей переменной слева.
Ruby очень дружелюбный и предоставляет синтаксический сахар, который может сбить с толку.
При вводе этого:
a, b = 1
Вы действительно говорят что-то ближе к этому:
[a, b] = [1, nil]
Хороший пример задания можно уничтожения того можно найти here. Это для JavaScript, но мне это нравится, потому что синтаксис очень ясен о том, что происходит, когда вы делаете такой настрой.
Я полагаю, в случае
a, b, c = 1, 2
исполняющая система работает следующим образом:
a, b, c = [1, 2]
_result = (a, b, c = (_values = [1, 2]))
a = _values[0] # => 1
b = _values[1] # => 2
c = _values[2] # => nil
_result = _values # => [1, 2]
Однако в случае одного значения на правой стороне: a, b = 1
, процесс вычисления выглядит несколько иначе:
Может кто-то одобрить или d оправдывает мое предположение?
- 1. методы объявить несколько переменных
- 2. объявить несколько переменных одинаковым значениям
- 3. Объявить несколько переменных класса Java
- 4. Как объявить несколько переменных в Turbo C++
- 5. Как объявить несколько переменных с помощью цикла?
- 6. Как объявить несколько изменяемых переменных одновременно?
- 7. объявить несколько переменных в переменную angularjs
- 8. объявить несколько переменных в одном операторе
- 9. Python объявить несколько списков
- 10. как объявить несколько имен переменных цикла в C#
- 11. Python: Как объявить несколько переменных с заданными именами?
- 12. Как объявить несколько переменных с одним и тем же именем
- 13. объявить большой список переменных
- 14. C++ объявить несколько переменных в одной и той же линии
- 15. Объявить несколько переменных в одной строке в Spock, когда: block
- 16. объявить несколько переменных с нулем в одной строке
- 17. Объявить несколько переменных для использования в макросах в SAS?
- 18. Объявить несколько переменных для одной переменной в mysql
- 19. Более короткий способ объявить несколько переменных в JavaScript?
- 20. Объявить несколько общедоступных переменных с тем же свойством
- 21. Можете ли вы объявить сразу несколько переменных в Go?
- 22. Можно ли объявить несколько переменных внутри цикла на основе подсчета?
- 23. Как объявить переменную, которая охватывает несколько строк
- 24. объявить НКА переменных как глобальные параметры
- 25. Объявление переменных несколько раз
- 26. Как объявить несколько переменных, созданных вызовом функции, возвращающим несколько значений в Go?
- 27. объявить несколько arraylists
- 28. Как передать несколько переменных?
- 29. Декларирование несколько переменных в JavaScript
- 30. Можете ли вы объявить несколько переменных с разными именами переменных в цикле без использования массива?
Вы можете задать только один вопрос за один раз. Это твердое правило. Однако, если вы отправляете Q2 в качестве отдельного вопроса, кто-то, вероятно, укажет, что 'b = a' заставляет' a' и 'b' указывать на один и тот же объект (например,' a.object_id # => 70270098990060; b .object_id; # => 70270098990060'), поэтому, если объект изменен, он будет отражен в значениях как 'a', так и' b'. –
Как и 'a = b = 1', есть также« параллельное назначение »:' a, b, c = 1,2,3; [А, б, в] => [1,2,3] '. –