Форум: "Прочее";
Текущий архив: 2007.11.11;
Скачать: [xml.tar.bz2];
ВнизПередать значение по ссылке в функцию в jave Найти похожие ветки
← →
ERGef (2007-10-02 23:06) [0]Как это сделать? В delphi мы дописываем var, в с++ - &. А в jave как?
← →
ferr © (2007-10-02 23:10) [1]Этого сделать нельзя.
← →
celades © (2007-10-02 23:10) [2]Объекты там и так ссылки
← →
tesseract © (2007-10-02 23:13) [3]Сегодня конкурс на самый тупой вопрос ? в PHP или Perl ничего по ссылке передать не нужно ? Откуда они в виртуальной машине ?
← →
sdubaruhnul (2007-10-02 23:18) [4]Почитай про boxing / unboxing.
← →
tesseract © (2007-10-02 23:22) [5]
> Почитай про boxing / unboxing.
Призрак memlink ? :-)
← →
Юрий Зотов © (2007-10-02 23:29) [6]> ERGef (02.10.07 23:06)
> А в jave как?
Передать объект. Например, не int, а Integer.
При этом, конечно, все равно идет передача копии, но передается копия ссылки на объект, а не копия объекта. Что позволяет менять его "начинку".
← →
tesseract © (2007-10-02 23:39) [7]
> но передается копия ссылки на объект, а не копия объекта.
> Что позволяет менять его "начинку".
95 % программистов, не понимает указателей (С) не помню кто.
← →
ERGef (2007-10-02 23:43) [8]
> Передать объект. Например, не int, а Integer.
Значит если передать массив, то "начинку" можно будет изменить. Ведь массив это объект. так?
← →
ferr © (2007-10-02 23:48) [9]> Сегодня конкурс на самый тупой вопрос ? в PHP или Perl
> ничего по ссылке передать не нужно ? Откуда они в виртуальной
> машине ?
В c# это делается ключевыми словами ref, in, out. По-вашему там нет виртуальной машины?
← →
ferr © (2007-10-02 23:49) [10]> Значит если передать массив, то "начинку" можно будет изменить.
> Ведь массив это объект. так?
Да.
← →
Плохиш © (2007-10-03 01:48) [11]
> ERGef (02.10.07 23:06)
> Как это сделать? В delphi мы дописываем var, в с++ - &.
> А в jave как?
Да, не царское это дело описание языка читать...
Это, думается, в первой же главе любой книжки описывается
← →
tesseract © (2007-10-03 10:10) [12]
> В c# это делается ключевыми словами ref, in, out. По-вашему
> там нет виртуальной машины?
По моему там есть неуправляемый код + прекомпиляция. С# к тому же может и нативный код делать.
← →
wicked © (2007-10-03 12:45) [13]> tesseract © (02.10.07 23:13) [3]
> Сегодня конкурс на самый тупой вопрос ? в PHP или Perl
> ничего по ссылке передать не нужно ? Откуда они в виртуальной
> машине ?
садись, два
и в перле, и в пхп можно передавать значения по ссылке
← →
tesseract © (2007-10-03 13:00) [14]
> садись, дваи в перле, и в пхп можно передавать значения
> по ссылке
Ну не по "ссылке", а саму переменую для изменения. У меня диалектика другая.
← →
wicked © (2007-10-03 13:04) [15]> tesseract © (03.10.07 13:00) [14]
> > садись, дваи в перле, и в пхп можно передавать значения
> > по ссылке
> Ну не по "ссылке", а саму переменую для изменения. У меня
> диалектика другая.
можно, именно для изменения
специально только что проверил
так что это не диалектика.....
← →
Игорь Шевченко © (2007-10-03 13:06) [16]
> 95 % программистов, не понимает указателей (С) не помню
> кто.
Спольски
← →
tesseract © (2007-10-03 13:13) [17]
> можно, именно для измененияспециально только что проверил
Получил блок памяти ?
← →
wicked © (2007-10-03 13:40) [18]> tesseract © (03.10.07 13:13) [17]
> > можно, именно для измененияспециально только что проверил
> Получил блок памяти ?
зачем мне блок памяти?
мне нужно менять значение переменной, переданной в функцию и в указанных языках для этого используется передача по ссылке
в перле - более низкоуровневый механизм
в пхп - более высокоуровневый
← →
Alkid © (2007-10-03 13:59) [19]
> По моему там есть неуправляемый код + прекомпиляция. С#
> к тому же может и нативный код делать.
C# не умеет делать НАТИВНЫЙ код. Он умеет делать UNSAFE код, а это очень разные вещи.
C# предусматривает
а) Возможность передавать по ссылке (ключ. слова ref, out) значения.
б) В Unsafe коде работать с указателями. Правда нельзя там брать указатель на объект.
В Java нет прямого способа передать value-тип (встроеныне примитивные типы) по ссылке в функцию. Можно только через объект-обёртку. AFAIK boxing-unboxing в Java реализуется только путём упаковывания в обёртку "ручками" и распаковывания обратно. В C# это делается автоматически.
← →
tesseract © (2007-10-03 14:06) [20]
> мне нужно менять значение переменной, переданной в функцию
> и в указанных языках для этого используется передача по
> ссылке
Ты путаешь передачу ПЕРЕМЕННОЙ с передачей ссылки. По ссылке/указателю можно хоть слона передать.
← →
tesseract © (2007-10-03 14:11) [21]
> C# не умеет делать НАТИВНЫЙ код. Он умеет делать UNSAFE
> код, а это очень разные вещи.
А ты чей C# имеешь в виду ?
← →
Alkid © (2007-10-03 14:15) [22]
> Ты путаешь передачу ПЕРЕМЕННОЙ с передачей ссылки. По ссылке/указателю
> можно хоть слона передать.
Есть два способа передачи объекта как параметра:
1. Объект копируется в стек. Его копия становится локальным объектом для вызываемого кода и уничтожается по завершению его работы. Все изменения в копии остаются в ней, оригинал не меняется.
2. В стек копируется только адрес объекта (в любой форме). Это может называться ссылкой, указателем или как-то ещё, не важно. В данном случае локальным объектом является только то, что содержит адрес передаваемого объекта, через который идёт обращение к объекту оригиниалу. В известных мне языках программирования передача по ссылке и передача указателя отличаются только синтаксически и косметически.
В свете изложенного, прошу пояснить, что есть "передача переменной", если это не есть пункт 1 вышеизложенного.
← →
Alkid © (2007-10-03 14:18) [23]
> А ты чей C# имеешь в виду ?
ECMA-шный :)
← →
tesseract © (2007-10-03 14:24) [24]
> что есть "передача переменной", если это не есть пункт 1
> вышеизложенного.
const и var я имею в виду.
Если ты приравниваешь переменную к ссылке - ну пусть так и будет. Ссылка она на определённую область памяти. Например если элемент массива передан по ссылке - я могу достучаться и до других его элементов просто переместиившись взад/вперёд по памяти (адрес есть), а если я передам его как переменную - надо будет предварительно выяснить её адрес - PHP такое позволит?.
← →
Alkid © (2007-10-03 14:27) [25]
> const и var я имею в виду.
> Если ты приравниваешь переменную к ссылке - ну пусть так
> и будет. Ссылка она на определённую область памяти. Например
> если элемент массива передан по ссылке - я могу достучаться
> и до других его элементов просто переместиившись взад/вперёд
> по памяти (адрес есть), а если я передам его как переменную
> - надо будет предварительно выяснить её адрес - PHP такое
> позволит?.
Не могу сказать, PHP в упор не знаю :) Я говорил про C++/C#/Dephi/Java.
Переменную к ссылке я не приравниваю. Ссылка - это адрес значения, переменная - это значение.
← →
vpbar © (2007-10-03 14:33) [26]А я вообще обычно различаю термины ссылка и указатель. Указатель - это нечто содержащее адрес памяти. Для указателя допустимы сложение и вычтаие. Считывание и запись байтов.
А ссылка - это объект, указывающий на определенные данные, но не хранящий их. Для ссылки допустима операция разыменования.
ЗЫ. Так вот ,насколько я помню, указателей в Java нет. Ибо тогда работа вртуальной машины очень усложняется.
← →
Alkid © (2007-10-03 14:40) [27]
> А я вообще обычно различаю термины ссылка и указатель. Указатель
> - это нечто содержащее адрес памяти. Для указателя допустимы
> сложение и вычтаие. Считывание и запись байтов.
> А ссылка - это объект, указывающий на определенные данные,
> но не хранящий их. Для ссылки допустима операция разыменования.
>
> ЗЫ. Так вот ,насколько я помню, указателей в Java нет. Ибо
> тогда работа вртуальной машины очень усложняется.
В джаве понятие ссылки - это не то, что понятие ссылки в C++, например.
В джаве (и в .NET) понятие ссылки это прямое обобщение понятия указателя, из которого выбрасывается арифметика и то, что он содержит адрес. Ссылка указывает на объект, а как - это деталь реализации. При это ссылку можно менять, т.е. заставлять её указывать на другие данные.
При этом, понятие ссылки в джаве/.NETе очень слабо относится к теме топика, ибо речь идёт только о передаче параметров в функции, где понятие "по ссылке" может не относиться к понятию "ссылка", применяемому в дргих частях программы. Т.е. ссылки вида:var MyReference : TObject
и вида:procedure MyProc(var X:integer)
Это немного разные по своей природе ссылки.
← →
tesseract © (2007-10-03 14:56) [28]
> В джаве понятие ссылки - это не то, что понятие ссылки в
> C++, например.
Указатель не имеет счётчика ссылок, "ссылка" имеет. Вот для меня разница.
Это я в [14] уже говорил.
> В джаве понятие ссылки - это не то, что понятие ссылки в
> C++, например.
Ну? у нас тут вроде DelphiMaster ?
← →
euru © (2007-10-03 14:56) [29]
> tesseract © (03.10.07 14:24) [24]
> const и var я имею в виду.
В Java аналогомconst
являетсяfinal
.
← →
euru © (2007-10-03 15:00) [30]
> tesseract © (03.10.07 14:56) [28]
> Указатель не имеет счётчика ссылок, "ссылка" имеет.
С какого перепуга?
← →
tesseract © (2007-10-03 15:01) [31]
> С какого перепуга?
Что именно ?
← →
Alkid © (2007-10-03 15:01) [32]
> Указатель не имеет счётчика ссылок, "ссылка" имеет. Вот
> для меня разница.
Простите, а где ссылка имеет счётчик ссылок? :)
Я не знаю, как там в PHP, но в Delphi, .NET и Java не применяются механизмы подсчёта ссылок в ссылках. В дельфи они применяются только в случае ссылок на интерфейсы, да и то, счётсик ссылок распологается внутри COM-объектов, а не в ссылках.
← →
tesseract © (2007-10-03 15:03) [33]
> Простите, а где ссылка имеет счётчик ссылок? :)
Гм, лан перегруз, тут согласен. Пересидел как-раз с COM- объектами :-)
← →
Alkid © (2007-10-03 15:08) [34]
> м, лан перегруз, тут согласен. Пересидел как-раз с COM-
> объектами :-)
Сочувствую. Помниццо один раз пересидел с COM-ом. Он мне уже ночами снился. Так вот, обсуждали с одногрупниками какого-то мерзкого препода, и я на полном серьёзе выдал: "а давайте все хором про него забудем и он исчезнет"!
Психушки избежал лишь чудом :)
← →
vpbar © (2007-10-03 15:11) [35]Alkid © (03.10.07 15:08) [34]
А что смешного. Если о чем-то или ком-то все забадут, то он действительно исчезнет.
← →
tesseract © (2007-10-03 15:16) [36]
> Сочувствую. Помниццо один раз пересидел с COM-ом.
У меня как раз COM+1С основная кормёжка считай. А delphi ну не всегда ведёт себя, как нужно 1С.
← →
Alkid © (2007-10-03 16:13) [37]
> А что смешного. Если о чем-то или ком-то все забадут, то
> он действительно исчезнет.
Мсье соллипсист?
← →
vpbar © (2007-10-03 16:28) [38]Alkid © (03.10.07 16:13) [37]
солипсист=законченный субъективный идеалист ?
Тогда: местами. В смысле не совсем законченный.
← →
sdubaruhnul (2007-10-03 19:37) [39]Щас будет второй Ruby On Rails, выпущенный в 1987 году и ставший прородителем всех дизайнеров форм.
← →
tesseract © (2007-10-03 21:57) [40]
> Щас будет второй Ruby On Rails, выпущенный в 1987 году и
> ставший прородителем всех дизайнеров форм.
Ну да, давайте ещё Xerox Lab вспомним.
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2007.11.11;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.044 c