2016-02-20 2 views
-1

Я попытался это:Colon перед тем цитатами

:"asdfas" 
# => :asdfas 
  1. Выход консоли, кажется, указывает, что я объявил :asdfas. Правильно ли я это понимаю? Если нет, что на самом деле означает вывод?
  2. В действительности, распространено ли использование двоеточия перед строкой? Если да, для чего он используется?

EDIT:

Daniel Контрерас упоминает, что «каждый выход возвращаемое значение этой функции или объекта», поэтому последующий вопрос: почему не :"asdfas"?

:"asdfas" 
# => :asdfas # why not :"asdfas" 

Почему кавычки вокруг asdfas раздели вниз на выходе?

+0

«использовать двоеточие перед строкой» - это не двоеточие перед строкой. двоеточие, предшествующее паре кавычек, является литеральным выражением одного символа. – sawa

+0

Я не совсем понимаю, что означает «однословное выражение буква». –

+0

В этом контексте, ':" asdfas "эквивалентно': asdfas'? –

ответ

1

Из моих ограниченных знаний в ruby ​​каждый выход является возвращаемым значением этой функции или объекта. например

> foo = 1+2 
=> 3 

> "#{foo} bar" 
=> "3 bar" 

И ответить № 2: Да, он довольно часто используется как побег в случае, если вы хотите использовать специальный символ в качестве части символа.

> :foo-bar  
NameError: undefined local variable or method `bar' for main:Object 
from (irb):10 
from /usr/bin/irb:12:in `<main>' 

> :'foo-bar'  
=> :"foo-bar" 

Так, :foo-bar является недопустимым символом и :"foo-bar" является действительным символом.

Редактировать: Эта последняя часть неверна, см. Ниже ответ пика для правильного ответа.

+1

': foo-bar' анализируется как': foo - bar', поэтому он не является ни допустимым, ни недопустимым символом - это выражение, включающее символ: foo и еще что-либо, называемое 'bar'. – peak

+0

Таким образом, на выходе возвращаемое значение ':" asdfas "' is ': asdfas'. Но почему не вывод ':" asdfas "? Почему кавычки вокруг 'asdfas' разделены на выходе? –

+0

Потому что они избыточны. Это все о представлении человека, которое должно быть понято парсером. Как показано выше, ': foo-bar' анализируется как': foo-bar' по очевидной причине; здесь нам нужны кавычки для указания парсера, что все это имя этого «Символа». Представьте себе магазин «Все за 1 доллар». Нет цен на предметы, без каких-либо вещей, которые стоят $ 2_. Последний будет помечен. – mudasobwa