Я собираюсь захватить рельсы, и пока я чувствую, что я прогрессирую, есть одна вещь, с которой я изо всех сил пытаюсь справиться, и это очень просто. Я пытаюсь понять различное использование [] {}
и ()
Есть ли хорошие источники их использования, и есть ли какие-либо советы, которые вы можете дать новичкам в распознавании, когда использовать тот или иной, или, как я, кажется, вижу в некоторых случаях когда они вообще не требуются?
Я знаю, что это чрезвычайно просто, но я изо всех сил старался найти литературу, в которой кратко объясняется взаимодействие между ними и Ruby или, в частности, RoRRoR различный кронштейн обозначение
ответ
Это не имеет никакого отношения к RoR; различные скобки - это конструкции языка Ruby.
[]
является оператором массива, для массивов и других классов, реализующих его (как струна, берущих диапазон для получения подстроки или хэши для поиска На стоимость ключа):
a = [1, 2, 3]
a.each { |n| puts n }
s = "ohai"
puts s[1..-1]
h = { foo: "bar", baz: "plugh" }
puts h[:foo]
{}
для хэшей , и один из двух способов разграничения блоков (другой - begin
/end
). (А используется с #
для интерполяции строк.)
h = { foo: "bar", baz: "plugh" }
h.each { |k, v| puts "#{k} == #{v}" }
()
для параметров метода, или для соблюдения порядка оценки в выражении.
> puts 5 * 3 + 5 # Normal precedence has * ahead of +
=> 20
> puts 5 * (3 + 5) # Force 3+5 to be evaluated first
=> 40
def foo(s)
puts(s)
end
Они иногда по желанию, если оператор не имеет двусмысленности:
def foo s
puts s
end
(Они не всегда необязательные, и положить пространство между вызовом метода и списком параметров могут в скобках вызвать проблемы - лучше не ИМО)
(я, вероятно, что-то пропустил, тоже, но это скорлупа)
.. 0[] используются для доступа к объектам внутри хэша (через ключ) или внутри массива (через индекс).
hash[:key] # returns a value
array[0] # returns the first array element
[] используется для описания массива.
array = ['a', 'b', 'c']
Конечно, это может быть вложен.
nested = [['a','b','c'], [1,2,3]]
[] может использоваться для объявления хэша, но это потому, что класс Hash может принимать массив.
hash = Hash[['a',1], ['b',2]] # { 'a' => 1, 'b', => 2 }
{} используется для объявления хэша.
hash = { 'a' => 1, 'b' => 2 }
Это тоже может быть вложенным.
hash = { 'a' => { 'c' => 3 }, 'b' => { 'd' => 4 } }
{} также используется для разграничения блоков. Метод .each
является общим. Следующие два блока кода эквивалентны.
array.each do |n|
puts n
end
array.each { |n| puts n }
The() используется только для группировки в случаях, когда неопределенность нуждается в разъяснении. Это особенно верно в методах, которые принимают много аргументов, некоторые из которых могут быть ноль, некоторые из которых могут быть obejcts и т. Д. Вы увидите много кода, которые полностью опускают их, поскольку для ясности не требуется группировка.
puts(string)
puts string
Я рекомендую стрельбу до rails console
и начать объявление переменных и доступ к ним.
Число аргументов в вызове метода на самом деле не является причиной двусмысленности, когда параметр является вызовом метода и т. Д., Когда нужно использовать парсеры, чтобы сделать лексер счастливым. –
Большое спасибо, особенно информация о массиве и вложенности хешей. – Tom
- 1. питона кронштейн обозначение Dict для SetItem метода
- 2. Обозначение синтаксиса RoR для Coda 2
- 3. Турнирный кронштейн
- 4. кронштейн и точечной нотации в составленном CoffeeScript
- 5. R regex может заменить открывающий кронштейн, но не закрывающий кронштейн
- 6. MS-Access: Заменить «кронштейн»
- 7. Кронштейн Highlighter не отображается
- 8. AutoIT массив отсутствует кронштейн
- 9. Sql кронштейн горизонтального
- 10. Перегрузка оператора кронштейн назначения
- 11. Неожиданный кронштейн - PHP
- 12. Java турнирный кронштейн
- 13. Perl строка содержит кронштейн
- 14. SQLite Кронштейн "не работают"
- 15. Кронштейн с бутстрапом Twitter
- 16. Escape "[" кронштейн с JSON
- 17. Software Foundations '| -' обозначение теней Обозначение соответствия Ltac
- 18. Обозначение объекта или фигурная скобка Обозначение
- 19. Array and HashMap Обозначение в Codecademy
- 20. @synthesize обозначение «_»
- 21. Обозначение bigquery
- 22. Verilog ** Обозначение
- 23. Обозначение вопроса
- 24. Обозначение запятой
- 25. Обозначение OpenID
- 26. AngularJS $ Inject - разница между точкой и кронштейн Accessor
- 27. sscanf удалить правый кронштейн C
- 28. Извлечение строки в двойной кронштейн
- 29. Java массив Декларация Кронштейн Размещение
- 30. как заменить ангел кронштейн строку
+1 Я полностью забыл об использовании {} в качестве разделителя блоков. – Ron
Я так благодарен за это. Это прояснило для меня вещи в впечатляюще сжатом виде. Очень признателен! – Tom
@Tom Нет пота; эту информацию можно найти в большинстве руководств Ruby, но не обязательно все в одном месте. Я должен добавить, что в RoR это в основном шаблоны ERb, где вам иногда нужно быть осторожными при использовании помощников, чтобы избежать синтаксических ошибок - легко получить немного неаккуратно. –