Разные способы ссылаться на себя? - PullRequest
1 голос
/ 08 сентября 2010

Дескриптор для себя называется разными вещами на языках ООП.Несколько, с которыми я сталкивался до сих пор:

  • this (например, Java, C #)
  • Me (например, VB, vba)
  • self (например, Python)

Кто-нибудь знает других?

Ответы [ 6 ]

3 голосов
/ 08 сентября 2010

В Python это просто соглашение, что нулевой аргумент называется self.Важна позиция.Что угодно подойдет, так что вы можете использовать i или что-нибудь еще:

class Foo:
  def bar ( i ):
    print i
1 голос
/ 09 сентября 2010

В OO-языках с несколькими диспетчеризациями, таких как Common Lisp (CLOS), Dylan или Slate, нет единого объекта-получателя, и поэтому нет понятия self.

1 голос
/ 08 сентября 2010

В Perl ссылка на себя никогда не подразумевается.

sub work {
    my($self) = @_;
    sleep();         # Don't do this
    $self->sleep();  # Correct usage
}

source: " Написание серьезного Perl - абсолютный минимум, который вам нужно знать "

1 голос
/ 08 сентября 2010

Поиск себя ...

Чаще всего это вообще ничего.Например, обычно «x» ссылается на this.x, если не существует локальной переменной x.

0 голосов
/ 09 сентября 2010

F # похож на Python и Perl в том смысле, что вы просто указываете свое имя.Вот пример Python @Pete Kirkham в F #:

type Foo =
  member i.bar = printfn "%O" i

Используйте его так:

let x = new Foo()
x.bar
0 голосов
/ 08 сентября 2010

Smalltalk также использует себя.

...