KinG_95
Компетентный
В Ruby существуют три вид переменных, один вид констант и точно две псевдо-переменные. Переменные и константы не имеют типа. Хотя у нетипизированных переменных есть некоторые недостатки, они имеют больше преимуществ и хорошо вписываются в философию Ruby быстро и просто.
В большинстве языков переменные должны быть объявлены для указания их типа, изменяемости (т.е. являются ли они константами), и облати действия; Поскольку тип не задается, а остальное видно из имени переменной, объявление переменных в Ruby не нужно.
Первая буква идентификатора дает нам возможность навскидку определить категорию:
$ ==>> глобальная переменная
@ ==>> переменная в классе
[a-z] or _ ==>> локальная переменная
[A-Z] ==>> константа
Единственным исключением являются псевдо-переменные в Ruby: self, который всегда ссылается на выполняемый в данное время объект, и nil, неопределенное значение, присваиваемое неинициализированным переменным. У обоих имена, подходящие под категорию локальных, но self является глобальной переменной, поддерживаемой интерпретатором, а nil на самом дле константа. Так как есть только два исключения, они не портят картину в целом.
Вы не можете присвоить значение self или nil.main, поскольку self ссылается на объект верхнего уровня:
ruby> self
main
ruby> nil
nil
В большинстве языков переменные должны быть объявлены для указания их типа, изменяемости (т.е. являются ли они константами), и облати действия; Поскольку тип не задается, а остальное видно из имени переменной, объявление переменных в Ruby не нужно.
Первая буква идентификатора дает нам возможность навскидку определить категорию:
$ ==>> глобальная переменная
@ ==>> переменная в классе
[a-z] or _ ==>> локальная переменная
[A-Z] ==>> константа
Единственным исключением являются псевдо-переменные в Ruby: self, который всегда ссылается на выполняемый в данное время объект, и nil, неопределенное значение, присваиваемое неинициализированным переменным. У обоих имена, подходящие под категорию локальных, но self является глобальной переменной, поддерживаемой интерпретатором, а nil на самом дле константа. Так как есть только два исключения, они не портят картину в целом.
Вы не можете присвоить значение self или nil.main, поскольку self ссылается на объект верхнего уровня:
ruby> self
main
ruby> nil
nil
