@dlangru

Страница 642 из 719
Виталий
27.07.2018
02:22:05
Что за dip кстати?

qwerty
27.07.2018
02:24:23
Да хоть какой-то. Вообще ни одного не обсуждали кажется. Сейчас рассматривается dip про передачу rvalue в метод, который ждёт lvalue и есть dip про инициализацию структур

Google
qwerty
27.07.2018
02:43:52
Там есть несколько вариантов инициализации. Как минимум можно обсудить какой лучше.

qwerty
27.07.2018
06:37:02
А можно ссылку? А то у меня комп сдох
https://forum.dlang.org/post/lpixarbirhorkltaqlew@forum.dlang.org

Прошу прощения, уснул

Stepanos
27.07.2018
06:54:23
https://forum.dlang.org/post/lpixarbirhorkltaqlew@forum.dlang.org
опля, идут в сторону swift/kotlin :)

qwerty
27.07.2018
07:05:02
может быть и здоово, однако же 2й схож с вызовом функции, что может быть хорошо, а может и запутать, если не саблюдать style guide. В первом варианте как мне видится ненужные круглые скобки. Третий вариант как альтернатива второму, если хотелось бы отличать вызов функции от структуры. Я бы хотел второй вариант, все таки потому что будут именованые аргументы для функций и следовательно контрукторы классов будут вызываться с круглыми скобками

тогда будет "единообразие"

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

Ievgenii
27.07.2018
07:16:13
Мне хоть такое и не нравится A a = A{} , но оно самое практичное. Ты его не спутаешь с другими вариантами

Типа А(r:8) так себе... Если ты указываешь без имени? Основываясь на порядке...

Это вызов ф-ции

Google
Ievgenii
27.07.2018
07:18:03
А такое A({r:4}) уж как-то много скобок, + тоже похоже на вызов функции с передачей в нее структуры

Denis
27.07.2018
07:20:15
qwerty
27.07.2018
07:39:13
Мне хоть такое и не нравится A a = A{} , но оно самое практичное. Ты его не спутаешь с другими вариантами
Да не спутаешь, но появляется различие между конструированием структуры и класса, а хотелось бы все-таки схожести между этими двумя вещами. К тому же есть нюанс. Если такую структруру без @disable this() struct Point { int x; int y; this(int x, int y){ ... } } то еще и новая возможность появляется создавать экземпляр структуры без конструктора. Сейчас если сделать Point(1, 2), то вызовется констуктор. А если выбрать A a = A{}, то можно будет делать так Point{1, 2} и конструктор уже не будет вызываться, если не изменить логику в компиляторе

Igor
27.07.2018
07:48:19
а по какому пути идёт Point{1, 2} ?

как он инициализирует?

Dark
27.07.2018
07:52:37
а по какому пути идёт Point{1, 2} ?
Наверное статически в памяти

Denis
27.07.2018
07:54:13
qwerty
27.07.2018
07:54:36
Это разве про rvalue?
нет, это про инициализацию структуры

Это разве про rvalue?
https://forum.dlang.org/post/xoiyfeudgibxtbywxtlt@forum.dlang.org

Igor
27.07.2018
07:58:18
да, много тонкостей

Dark
27.07.2018
07:58:54
https://forum.dlang.org/post/xoiyfeudgibxtbywxtlt@forum.dlang.org
Мне кажется, плохая идея

Если параметр помечен ref'ом, он изменяется внутри функции, иначе от него смысла нет

Dark
27.07.2018
08:00:30
А какой от него смысл?

Denis
27.07.2018
08:01:04
Ну типа показывает что вызов это передача указателя, а не копирование большого объекта

Dark
27.07.2018
08:01:56
Для этого можно и указатель передать

Denis
27.07.2018
08:02:27
Неа, он может быть null

Dark
27.07.2018
08:02:58
А ref разве нет?

Google
Dark
27.07.2018
08:06:13
А, ну да

В случае с const ref это имеет смысл

А в остальных случаях только скроет мутации объекта

Pavel
27.07.2018
09:58:23
Очень плохо что нельзя ref делать у членов класса или структуры

Я хочу нередко хранить там ссылку на что-то, а приходится указатель

Pavel
27.07.2018
10:00:34
Да не знаю. Или просто не доделали, или есть какая-то фундаментально-теоретическая причина навроде rvalue/lvalue

NullSanya
27.07.2018
10:01:19
Ну в плюсах ее нельзя изменить вроде и ее надо сразу инициализировать чем-то валидным

может тут так же

Igor
27.07.2018
10:03:58
Очень плохо что нельзя ref делать у членов класса или структуры
а приведи пример? так непонятно что именно нельзя

если у тебя член стуктуры - класс, то вот тебе и ref. А ref на структуру это и есть в каком-то смысле ссылка. Можно её обвернуть в Nullable или еще как-то

Denis
27.07.2018
10:07:13
Pavel
27.07.2018
13:13:52
А как ты гарантируешь что там не null?
Ну примерно так же как и в случае объектов - выпадает null reference exception и все раком встает )

Причем такую ситуацию в Д довольно трудно выявить, я сталкивался пару раз.

Pavel
27.07.2018
13:24:38
Во-первых да, во вторых в случае с указателем все же segfault случается. Но по крайней мере можно будет не писать везде myvar* в сигнатуре типа

Denis
27.07.2018
14:52:12
Страшное предлагаешь

И щас можно не писать

Но зачем?

Pavel
27.07.2018
15:12:39
мне не нравится звездочка

Google
Pavel
27.07.2018
15:12:48
Она мне напоминает о временах си и адресной арифметики

Dmitry
27.07.2018
15:44:16
on conflict
А как с ним работать, если у меня эти поля не имеют ограничения уникальности. Ситуация следующая. Мне нужно Вставить значения если их нет, Если есть, то обновить один из столбцов (занят номер или не занят).

Сейчас проблему решаю через: INSERT ... where not exists ()

Pavel
27.07.2018
19:16:13
Есть зеркало на github
В гайдах тихо, а искать некогда

qwerty
27.07.2018
19:21:37
https://github.com/llvm-mirror

Pavel
27.07.2018
19:40:08
Спасибо, конечно, но я его уже собрал и теперь пол-года как минимум не буду к этому возвращаться.

Dmitry
28.07.2018
10:43:06
Пусть заимеют
предлагаешь составной ключ сделать и потом сделать его уникальным?

Кстати, а есть ли смысл вообще разделять одинарные и двойные кавычки? Может проще как в питоне сделать? print('hello') вместо print("hello")?

Admin
ERROR: S client not available

NullSanya
28.07.2018
10:51:26
' ' для символа

"" для строки

Dmitry
28.07.2018
11:24:20
да это понятно, но надо ли такое разделение?

NullSanya
28.07.2018
11:24:59
да это понятно, но надо ли такое разделение?
Хороший вопрос, тогда как показать литерал символа?

Dmitry
28.07.2018
11:28:31
Ну если символ объявлен как char то значит это просто симол, или я не понял что ты имеешь ввиду?

DarkRiDDeR
28.07.2018
11:45:16
Auto a = 'a'; А так какой? ))

NullSanya
28.07.2018
11:46:00
Я видел такой подход к строкам, но там не было типа символов

qwerty
28.07.2018
11:47:37
сейчас опять про питон начнется))

Google
Dmitry
28.07.2018
11:47:41
как в других языках проблему решают?

NullSanya
28.07.2018
11:47:48
просто убирают тип чар

и все

qwerty
28.07.2018
11:48:11
Dmitry
28.07.2018
12:06:31
Кстати, а вот по вашему опыту юнит-тесты на сколько жизнь облегчают? Нужно ли ими все покрывать? Или они тоже не дают существенных гарантий?

Dmitry
28.07.2018
12:09:18
Просто в том же Ди они хотя бы в общем коде идут, а в Питоне при мысле про отдельные файлы меня передергивает т.к. сразу возникает ощещение двойной если не тройной работы

NullSanya
28.07.2018
12:10:02
в расте юнит в коде, интеграционные в папке тест

Oleg
28.07.2018
12:44:25
все крайние значения, нестандартные применения, выброс исключений, всё

ну в пределах разумного, конечно

а разумно это 1:1

но это если всё оформлено обособленно (классы с понятной зоной ответственности, нормальная архитектура, которая позволяет частями проверять) и если проверка проще чем код

Dmitry
28.07.2018
12:49:42
А ты как обычно делаешь? Пишешь Класс и потом сразу же юнит-тест на него?

или в начале все приложение и потом юнит-тесты на него после того как первая версия заработает?

Просто же не всегда понятно как в итоге код будет организован

Oleg
28.07.2018
12:55:29
Просто же не всегда понятно как в итоге код будет организован
лучше сначала спроектировать хоть немного, разбить на модули

даже если ты не знаешь как в итоге будет всё сделано это не мешает проверить составные части

Pavel
28.07.2018
13:22:30
Причем не только юнитов, а функциональные и интеграционные и приемочные

Dmitry
28.07.2018
14:21:40
Поясни на примере что такое функциональные и интеграционный.

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