На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (495) « Первая ... 349 350 [351] 352 353 ...  494 495  ( Перейти к последнему сообщению )  
> Delphi vs C++ vs C# , ну и Java немножко, где-то ближе к старшему байту номеров страниц
    Цитата korvin @
    а чем по-вашему может быть T.Name?

    Чем угодно, что захотелось программисту.
    Цитата korvin @
    у да. представление объекта в виде строки -- это object.toString() например, но никак не typeof(Object). но при чем тут представление объекта в виде строки? T там -- это тип, а не объект.

    Потому что выводится на печать. Вообще говоря, когда в write подается просто объект, ожидается, что будет именно ToString. А тут пример вывода названия типа объекта, поэтому typeof. А функция или метод объекта - разницы не вижу.
    Цитата korvin @
    в том, что как и жабке в этом Oxygen не смогли реализовать нормально типы как объекты. а сравниватся и значения и типы должны одинаково

    Это как? Допустим, есть у нас integer, две переменных, со значениями 1 и 2. Если сравнивать типы - они равны, а если значения - то нет. Как ты обозначишь, что именно сравнивается?
      Цитата korvin @
      именно наименование -- это и есть T.Name (Integer.Name) или T.FullName или T.RealName в зависимости от ситуации. а чем по-вашему может быть T.Name?

      не, ну есть ССЗБшные языки, которые позволяют переопределить методы метакласса, но никто же не заставляет следовать по их стопам
        Цитата Romkin @
        А байткод, если память не изменяет, очень неплохо декомпилируется в java...

        Этот байткод позволяет скомпилить C++ со всеми его видами наследования. Но для взаимодействия с платформой в C++/CLI есть специальные типы, для которых доступно только одиночное наследование реализаций. Опять же для них есть не только дженерики, но и шаблоны. Естественно, для всех остальных языков видимы только дженерики, потому что .NET непосредственно не поддерживает шаблоны.
          Цитата Romkin @
          Потому что выводится на печать. Вообще говоря, когда в write подается просто объект, ожидается, что будет именно ToString. А тут пример вывода названия типа объекта, поэтому typeof. А функция или метод объекта - разницы не вижу.

          нет, тут не вывод типа объекта, вывод типа объекта там был бы например
          ExpandedWrap disabled
            WriteLine(typeof(1));
            // или
            var a : Integer = 1;
            WriteLine(typeof(a));


          точнее конечно вывод типа объекта, но объектом там является тип, а тип типа -- метатип, т.е. должен быть выведен какой-нибудь "System.Type", причем для всех трех случаев.
            Цитата MyNameIsIgor @
            Этот байткод позволяет скомпилить C++ со всеми его видами наследования. Но для взаимодействия с платформой в C++/CLI есть специальные типы, для которых доступно только одиночное наследование реализаций.

            Я говорил о jvm
            Цитата korvin @
            точнее конечно вывод типа объекта, но объектом там является тип

            Нет. Объектом там является экземпляр, не путайся.
              korvin, не во всех языках есть явное понятие метатипа. И часто как метотип могут рассматриваться разные сущности. Это и статические/классовые методы и отдельный метатип(как в питоне) и даже дженерики/шаблоны.
              Сообщение отредактировано: D_KEY -
                Цитата Romkin @
                Это как? Допустим, есть у нас integer, две переменных, со значениями 1 и 2. Если сравнивать типы - они равны, а если значения - то нет. Как ты обозначишь, что именно сравнивается?

                в смысле?
                ExpandedWrap disabled
                  var a : Integer = 1;
                  var b : Integer = 2;
                   
                  WriteLine( if a == b then "a == b" else "a /= b" ); // сравниваются значения
                  WriteLine( if typeof(a) == typeof(b) then "a and b have same type" else "a and b have different types" ); // сравниваются типы

                ExpandedWrap disabled
                  var a : Type = Integer;
                  var b : Type = Float;
                  WriteLine( if a == b then "a == b" else "a /= b" );

                что именно тебя смущает?
                  Цитата Romkin @
                  Я говорил о jvm

                  Разве оно сильно отличается от .NET?

                  Цитата
                  Нет. Объектом там является экземпляр, не путайся.

                  Там тоже две системы типов в одном языке?
                    Цитата Romkin @
                    Нет. Объектом там является экземпляр, не путайся.

                    ты прикалываешься что ли?
                    ExpandedWrap disabled
                      class method GenericMethodTest.DoSwap<T>(left, right : T);
                      begin
                        var a := left;
                        var b := right;
                        Console.WriteLine('Type: {0}', typeof(T));
                        Console.WriteLine('-> a = {0}, b = {1}', a , b);
                        Swap<T>(var a, var b);
                        Console.WriteLine('-> a = {0}, b = {1}', a , b);
                      end;

                    T -- это тип
                      Цитата korvin @
                      в смысле?

                      Ну вот видишь, сам и написал typeof.
                      Цитата korvin @
                      ты прикалываешься что ли?

                      Экземпляр типа. Конкретного инстанцированного типа. И выводится именно что за тип, а не от чего он порожден. Вот было бы что-то вроде instanceof или inheritsfrom - тогда да.
                        Цитата D_KEY @
                        korvin, не во всех языках есть явное понятие метатипа. И часто как метотип могут рассматриваться разные сущности. Это и статические/классовые методы и отдельный метатип(как в питоне) и даже дженерики/шаблоны.

                        ну да, явно -- далеко не во всех, тем более редко в статически-типизированных (я имею в виду как полноценную сущность языка). но неявно(статические/классовые методы и т.п.) в довольно многих современных. я не об этом, а о том, что из-за неполноценности реализаций часто становится невозможно выполнить какие-то тривиальные вещи =(

                        Добавлено
                        Цитата Romkin @
                        Ну вот видишь, сам и написал typeof.

                        Экземпляр типа. Конкретного инстанцированного типа. И выводится именно что за тип, а не от чего он порожден. Вот было бы что-то вроде instanceof или inheritsfrom - тогда да.

                        ты принципиально не понимаешь о чем речь? ты принципиально не видишь разницы между
                        ExpandedWrap disabled
                          typeof(1);

                        и
                        ExpandedWrap disabled
                          typeof(Integer);

                        ?

                        Добавлено
                        а, ну т.е.
                        ExpandedWrap disabled
                          var a : Integer = 1;
                          typeof(a); // => Integer;
                           
                          var T : Type = Integer;
                          typeof(T); // => по-твоему должно вернуть Integer?
                          Цитата korvin @
                          ты принципиально не понимаешь о чем речь? ты принципиально не видишь разницы между

                          Я то вижу. А вот ты не понимаешь, что приведенный тобой метод работает с конкретным типом. И нигде не сказано, что можно делать typeof(1). Хотя скорее всего делать можно, и в том и в другом случае должен выдать integer :) Это не instanceof. Выводится именно что за тип, а не чьим экземпляром он является.
                          Просто кое-где начинается бродилово, с привлечением "суперметакласса" вроде type или подобного.
                            ну вот это я и называю недоделкой

                            Добавлено
                            Цитата Romkin @
                            приведенный тобой метод работает с конкретным типом.

                            я-то понимаю, но что это меняет? тем более необходимость в typeof отсутствует. особенно, если она, как ты говоришь, просто функция.
                            вот, кстати, и покажи реализацию этой функции
                            Сообщение отредактировано: korvin -
                              Цитата korvin @
                              тем более необходимость в typeof отсутствует. особенно, если она, как ты говоришь, просто функция.
                              вот, кстати, и покажи реализацию этой функции

                              У меня нет Prism, есть только Delphi.
                              Необходимость в typeof есть, поскольку тип тоже объект, надо указать что ты от него хочешь.
                                Цитата Romkin @
                                У меня нет Prism, есть только Delphi.
                                Необходимость в typeof есть, поскольку тип тоже объект, надо указать что ты от него хочешь.

                                из приведенного в вике примера вывода программы ясно следует, что "я" хочу получить полное имя типа
                                Сообщение отредактировано: korvin -
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 349 350 [351] 352 353 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.5256 ]   [ 15 queries used ]   [ Generated: 31.07.26, 06:11 GMT ]