Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.12.2010, 13:54
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

переопределение констант
ну так давно узнал, что в php можно переопределять константы классов
class A { const A = 1; }
class B { const A = 2; }
echo B::A;


так вот по сравнению с fortran php отдыхает. Там можно писать в литералы константы (баг называется constants aren't):
Код:
  PROGRAM MYSTERY
      CALL MAGIC(1)
C     !!! Prints 12
      PRINT *, 'According to the computer, 3 + 1 is ', ADDUP(3, 1)
      END

      FUNCTION ADDUP(I, J)
      ADDUP = I + J
      END

C     What does this subroutine actually do?
      SUBROUTINE MAGIC(I)
      I = 9
      RETURN

      END
я только не уверен, во всех ли реализациях. Может только в той, что от ms
The __fortran calling convention isn't the calling convention used by FORTRAN

Последний раз редактировалось x-yuri, 27.12.2010 в 13:58.
Ответить с цитированием
  #2 (permalink)  
Старый 10.07.2012, 12:02
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

а сейчас наткнулся на то, что в perl 4 было то же самое:

Код:
    $foo = "x";
    &mod($foo);
    for ($x = 0; $x < 3; $x++) {
        &mod("a");
    }
    sub mod {
        print "before: $_[0]";
        $_[0] = "m";
        print "  after: $_[0]\n";
    }
    # perl4:
    # before: x  after: m
    # before: a  after: m
    # before: m  after: m
    # before: m  after: m
http://perldoc.perl.org/perltrap.html
Ответить с цитированием
  #3 (permalink)  
Старый 10.07.2012, 12:09
Аватар для vasa_c
Профессор
Отправить личное сообщение для vasa_c Посмотреть профиль Найти все сообщения от vasa_c
 
Регистрация: 12.03.2008
Сообщений: 183

определили константу в A, определили константу в B.
A::A при этом осталась, как и была.
к переопределению констант это не имеет никакого отношения.
Ответить с цитированием
  #4 (permalink)  
Старый 12.07.2012, 18:52
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

я там extends A пропустил: class B extends A { const A = 2; }. Далее, если я пишу self::A:
class C extends B { function f() {
    var_dump(self::A);
}}

я получу, B::A. Почему? Правильно, потому что класс B переопределил константу А.

Последний раз редактировалось x-yuri, 12.07.2012 в 18:55.
Ответить с цитированием
  #5 (permalink)  
Старый 12.07.2012, 19:23
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от x-yuri
я получу, B::A. Почему? Правильно, потому что класс B переопределил константу А.
никто ничего не переопределил. Просто у A есть своя константа у B своя. А при обращении к self::A ты получаешь ссылку на класс B поэтому и получаешь его константу, но при этом обратившись к A::A получишь нормальную константу класса A.

Так работает во всех языках программирования, и это не переопределение.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #6 (permalink)  
Старый 12.07.2012, 23:57
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

ok, расскажите мне, что такое переопределение
Ответить с цитированием
  #7 (permalink)  
Старый 13.07.2012, 01:16
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

http://ru.wikipedia.org/wiki/%D0%9F%...BE%D0%B4%D0%B0
x-yuri, прав, хотя до этого был согласен с devote, во многих источниках переопределение -упоминается изменение изменяющее родительское в контексте родительского .

Последний раз редактировалось dmitriymar, 13.07.2012 в 01:20.
Ответить с цитированием
  #8 (permalink)  
Старый 13.07.2012, 01:20
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от x-yuri
ok, расскажите мне, что такое переопределение
ну я может не правильно выразился. Но константа в классах, это по большей части static свойство. И считать переопределением статические свойства в классах по моему не уместно.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #9 (permalink)  
Старый 13.07.2012, 12:53
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от devote
это по большей части static свойство. И считать переопределением статические свойства в классах по моему не уместно.
в принципе да, хотя если взять тот же lsb...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переопределение переменных в FF и IE6 onejsquestion Общие вопросы Javascript 5 27.10.2009 09:08
Переопределение метода базового класса walash jQuery 18 15.07.2009 17:05
Переопределение параметров слайдера alexilin jQuery 2 18.06.2009 23:32
JQuery плагин Validation. Переопределение правил валидации формы. Виталик jQuery 3 07.06.2009 13:32
переопределение события blade-mscl Events/DOM/Window 5 13.10.2008 23:59