Вопрос о переменной области Ruby Instance - PullRequest
6 голосов
/ 17 сентября 2010

Я пришел из C ++ и JAVA, которые с Scope есть либо глобальные, либо локальные.

Сейчас я изучаю ruby-on-rails, а с ruby ​​- локальный, экземплярный и глобальный.Я никогда не слышал об этом до сих пор.

С рельсами или без них, каково понимание и использование переменной экземпляра?

Global = Variable across all objects share
Instance = Variable inside of the object
Local = Variable inside of the object

Я думаю, что я смешиваю инстанс и местный вид.

@ham
ham

Это две разные переменные, верно?Иногда я путаюсь в Rails, потому что они используют вещи взаимозаменяемо, такие как @something и: что-то.Это почему?

Поскольку я использую платформу rails, я понимаю, что переменная экземпляра - это нечто, доступное представлению.

Может кто-нибудь уточнить эти переменные?

Ответы [ 2 ]

6 голосов
/ 17 сентября 2010

Переменная экземпляра в Ruby похожа на переменную в Java, часть состояния объекта:

class MyObject
  def set_x(x)
    @x = x
  end

  def get_x
    @x
  end
end

Эквивалентный код Java:

class MyObject {
    private Object x;

    void setX(Object x) {
        this.x = x;
    }

    Object getX() {
        return x;
    }
}

А локальная переменная - это просто переменная, доступная только внутри этого конкретного метода:

def doIt 
    x = 3;
    # x not accessible from outside of doIt
    puts x
end

void doIt() {
    int x = 3;
    // same in Java
    System.out.println(x);
}

редактировать
Что вы подразумеваете под состоянием объекта?

MyObject o = new MyObject();
o.setX(3);
// integer 3 is now stored in variable 'x' of object 'o'
// I can return any time later and get that value back by 'o.getX()'
1 голос
/ 17 сентября 2010

Символы с двоеточием (: что-то) являются символами.

http://glu.ttono.us/articles/2005/08/19/understanding-ruby-symbols

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...