
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

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

Evgeny
28.12.2017
15:17:00
string - это immutable(char)[]

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

Evgeny
28.12.2017
15:20:55

Mike
28.12.2017
15:21:09

Google

Evgeny
28.12.2017
15:22:25
не нужен тебе ref
слайс динамического массива - тоже массив

Oleg
28.12.2017
15:22:51

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

Oleg
28.12.2017
15:23:33

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
а джаву ть говорил знаешь

Evgeny
28.12.2017
15:28:14

Mike
28.12.2017
15:28:32

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

Google

Evgeny
28.12.2017
15:28:49
const char* = "abc";

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 пишу(

Stepanos
28.12.2017
15:32:04

Mike
28.12.2017
15:32:08

Evgeny
28.12.2017
15:32:44
плюсы и может быть современная сяшка уже не даст тебе так сделать

Igor
28.12.2017
15:34:06

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

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


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

Google

Mike
28.12.2017
15:36:18

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

Igor
28.12.2017
15:38:12

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

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
Ну когда наработаешь много лет вместе то да
А так-то постоянно новое, кому что объяснять, библиотеки чужие подключать и т.д.
Есть даже такой термин защитное программирование