@dlangru

Страница 358 из 719
Evgeny
28.12.2017
14:25:21
а себя ты к какой категории относишь? ?

Dmitry
28.12.2017
14:34:46
а себя ты к какой категории относишь? ?
Ни к какой. Сегодня занимаешься одним, завтра другим.

Ievgenii
28.12.2017
14:37:13
)))

Evgeny
28.12.2017
14:37:52
то есть сегодня "педераст", завтра нет? ?

Google
Dmitry
28.12.2017
14:58:52
Ну я без короны на голове, поэтому кодописание в моём исполнении — не педерастия. )

Mike
28.12.2017
15:04:29
Получаю такую ошибку: Error: cannot implicitly convert expression ... of type 'char[][]' to 'string[]' - опять грабли из-за мутабл/иммутабл ? ну лажно, меняю string[] на char[][] — и движуха ещё веселее начинается: Error: none of the overloads of '__ctor' are callable using argument types (char[]) - т.е. безняга не знает что с char[][] делать... пытаюсь сделать ход конём и... спотыкаюсь: кааак мне вернуть из функции слайс в виде string? Я как пр иэтом вообще будет работать логика возвращения ref..?? Сейчас вот так: return buffer[0..$-2]; - buffer это динамический масив чаров ? Я всё ещё мыслю на сях, помогите мне, пожалуйста, перестроить мышление......

qwerty
28.12.2017
15:05:03
код пожалуйста

Mike
28.12.2017
15:06:46
код пожалуйста
эмм... вроде всё необходимое показал: всё сводится к тому что мне нужно из функции вернуть string, который я хочу сделать из куска динамичсекого массива чаров ?

qwerty
28.12.2017
15:07:40
хорошо

Evgeny
28.12.2017
15:08:01
кастуй

Mike
28.12.2017
15:08:12
вот это return buffer[0..$-2] возвращает именно char[] - как его в string "правильно" переделать чтобы скартить стандратным функциям, которые только string хавают..?

Evgeny
28.12.2017
15:08:34
.dup сделай

Ievgenii
28.12.2017
15:08:36
to!string

Но могу ошибаться

Dmitry
28.12.2017
15:09:13
Mike
28.12.2017
15:09:32
кастуй
в смысле return cast(string)buffer[0..$-2]..? ?

Dmitry
28.12.2017
15:09:57
если исходный массив может меняться, то idup. Если не будет - то можно cast.

Google
qwerty
28.12.2017
15:09:58
buffer[0..$-2].idup

Evgeny
28.12.2017
15:10:25
.idup еще не задепрекейтили?

qwerty
28.12.2017
15:10:35
а должны?

Dmitry
28.12.2017
15:10:36
с чего бы?

Evgeny
28.12.2017
15:11:50
наверное я с чем-то попутал

но вообще результат dup вроде неявно кастуется в string, так как чистая функция

Dmitry
28.12.2017
15:13:34
тип-то другой

Oleg
28.12.2017
15:14:19
кастуй
Не думаю что хороший подход

Evgeny
28.12.2017
15:14:53
Не думаю что хороший подход
зато эффективный, если уверен, что массив больше никуда не утек.

тип-то другой
это не важно. результат чистой функции всегда может неявно кастоваться к immutable

вот это компилируется: char[] a = "abc".dup; string b = a.dup;

Mike
28.12.2017
15:15:38
buffer[0..$-2].idup
да, оно) спасибо

qwerty
28.12.2017
15:16:24
не за что

Evgeny
28.12.2017
15:17:00
да, оно) спасибо
dup/idup, если что, делает копию массива.

string - это immutable(char)[]

Mike
28.12.2017
15:19:33
если исходный массив может меняться, то idup. Если не будет - то можно cast.
полагаю тогда надо массив через new генерить и отдавать по ссылке (ref)..? ? ну т.е. в случае когда ты в функции создал массив, наполнил его данными и именно его отдал наружу..... верно? Или так делать считается плохой практикой? потому что с С/С++ либах стандарт "де-факто" отдавать в функцию уже выделенный массив (ну т.е. указатель на уже выделенную память и объём этой самой выделенной памячти)... ? но, мне кажется, это потому что там сборщиков мусора нет - потому что в той же яве наоборот, передавать объекты из функций наружу это норм ?

dup/idup, если что, делает копию массива.
эт я уже знаю) просто массив же вроде на стеке выделяется (да?), значит отдать именно его наружу нельзя....

Evgeny
28.12.2017
15:20:55
Mike
28.12.2017
15:21:09
string - это immutable(char)[]
'т я тоже знаю, хотя видел одно странное поведение.. щас попробую показать

если массив статический, то на стеке, динамический в куче
т.е. слайс динамического массива можно спокойно возвращать через ref..? и если он char[], то просто скастить в string?) ?

Google
Evgeny
28.12.2017
15:22:25
не нужен тебе ref

слайс динамического массива - тоже массив

Evgeny
28.12.2017
15:23:02
но можно обойтись без каста, ща покажу

и без idup

Oleg
28.12.2017
15:23:33
не всегда верно
Не всегда, но в 85% случаев

Evgeny
28.12.2017
15:23:42
у меня так наоборот

Oleg
28.12.2017
15:23:59
И пока нет чёткого понимания что происходит, лучше не надо

На то строки и immutable, чтобы быть неизменяемыми в принципе

На этом много логики строится

Mike
28.12.2017
15:25:31
кто знает - зачем вообще string сделали immutable..?? у меня как сишника это не укладывается в голове........ ?

Evgeny
28.12.2017
15:27:02
ну в сях таки тоже строковые литералы - это const char*

Stepanos
28.12.2017
15:27:12
а в джаве почему стринг имутабельньій?) та же причина

Mike
28.12.2017
15:27:16
не нужен тебе ref
но ведь без ref всё передаётся по значению, т.е. как бы через .dup/.idub - разве нет..? ?

Evgeny
28.12.2017
15:27:18
вот как без каста и лишнего оверхеда на копирование https://glot.io/snippets/ewu43zgrzk

Stepanos
28.12.2017
15:27:22
а джаву ть говорил знаешь

Mike
28.12.2017
15:28:32
ну в сях таки тоже строковые литералы - это const char*
ну это у всяких чужих либ - я никогда в своих самописный const не использовал и ни разу от этого никаких проблем не было ?

Evgeny
28.12.2017
15:28:36
точнее динамический массив

Google
Mike
28.12.2017
15:29:41
а в джаве почему стринг имутабельньій?) та же причина
ну в жаве вообще всё по указателям, так что кто там имутабл - да хрен его знает, ты этого даже не касаешься....

qwerty
28.12.2017
15:30:01
иммутабельные сроки - нормально

фигачишь и не паришься

Mike
28.12.2017
15:30:14
Это криво
что здесь кривого? аргументы, пожалуйста ? мне, правда, интересно....

qwerty
28.12.2017
15:30:31
нужна оптимизация, то манипулируешь с char[]

Evgeny
28.12.2017
15:31:05
ну потому что если ты напишешь char* a = "123446"; а потом случайно сделаешь a[0] = '0', то получишь сегфолт.

Mike
28.12.2017
15:31:10
фигачишь и не паришься
протсо для меня "строки" не отличаются от массива интов или флоатов - просто данные, представление которым есть только в твоей голове))) зачем их жедать неизменяемыми??????

Admin
ERROR: S client not available

qwerty
28.12.2017
15:31:12
хотя может это потому что я на python пишу(

Evgeny
28.12.2017
15:32:44
в каком языке? на какой архитектуре?
в сяшке, как минимум на x86/64

плюсы и может быть современная сяшка уже не даст тебе так сделать

Evgeny
28.12.2017
15:34:07
пруф - https://glot.io/snippets/ewu4bijv0m

Mike
28.12.2017
15:34:49
тьі у меня б собеседование не прошел)
как показыват практика, деньги делают люди которые в разы меньше меня знают)) так что заявления "ты бы у меня собеседование не прошёл" вызывают у меня истерический смех, потому что напоминают препода из вуза, который ничо в жизни не смог достичь, поэтому тешит своё эго на студентах, академичсеки доминируя над ними ?

А что в этом хорошего? Аргументы, кроме "а я не парюсь"?
никто так и не сказал что в этом плохого... ? доказательство от противного, господа)

Google
Evgeny
28.12.2017
15:36:22
"сейчас" это лет 20 наверное минимум :D

Stepanos
28.12.2017
15:36:36
доминация и ЧСВ здесь не причем, если тьі претендуешь на норм ЗП и позиционируешь себя как мидл или старше - базу надо знать, вот я в D даже на джуна не тяну)

Evgeny
28.12.2017
15:37:17
ну меня еще в инсте в прошлом тысячелетии учили, что писать char* a = "abc"; нехорошо, изменишь случайно и схлопочешь UB, а так компилятор не даст.

Mike
28.12.2017
15:37:33
фигачишь и не паришься
к слову - не я первый выдвинул "не париться" как критерий))))

Mike
28.12.2017
15:38:45
То есть аргументов за нету
стрелки переводишь?)

Evgeny
28.12.2017
15:39:10
Ну безопасное всегда лучше опасного, не?

если есть возможность писать безопасно, зачем писать опасно?

вот тебе и все аргументы

строковые литералы так вообще обычно в каком-нибудь защищеном data сегменте сидят или вовсе ПЗУ

Igor
28.12.2017
15:40:25
Аргументами за иммутабелбность интернеты ломятся но писатели только пишут но не читают

Pavel
28.12.2017
15:43:09
протсо для меня "строки" не отличаются от массива интов или флоатов - просто данные, представление которым есть только в твоей голове))) зачем их жедать неизменяемыми??????
Абсолютное большинство проблем в программировании возникает в процессе жизненной динамики а не в жизненной статике. То есть когда код копипастят, правят, совершенствуют по 100 раз в год, вырезают, обсуждают, читают, тестируют и как угодно изменяют. Вот тут и пригождаются все эти const.

Evgeny
28.12.2017
15:43:42
да, мутабельное оно всегда опаснее иммутабельного

Pavel
28.12.2017
15:44:01
Даже разработка в одиночку гораздо проще и быстрее чем вдвоем

Evgeny
28.12.2017
15:44:09
многие считают, что иммутабельность по умолчанию было бы лучше для D. И я в целом понимаю эти желания.

Pavel
28.12.2017
15:44:29
Когда вдвоем - сразу огромные затраты на коммуникацию между людьми и на посылку речевых пакетов через воздух.

Evgeny
28.12.2017
15:45:02
ну не так все плохо, в хорошей команде люди понимают друг-друга с полуслова.

редко это правда бывает

Pavel
28.12.2017
15:45:22
Ну когда наработаешь много лет вместе то да

А так-то постоянно новое, кому что объяснять, библиотеки чужие подключать и т.д.

Есть даже такой термин защитное программирование

Страница 358 из 719