@dlangru

Страница 423 из 719
Stanislav
03.03.2018
10:07:22
и чет непонятно что конкретно не робит и что делать

NullSanya
03.03.2018
10:09:05
а автокомплит не робит
Прописал пути к стд?

Stanislav
03.03.2018
10:09:49
а где прописать?)

Pavel
03.03.2018
10:14:25
Открой консоль разработчика и смотри какие там ошибки валятся

Google
Pavel
03.03.2018
10:25:40
Сколько можно заходить сюда снова и снова? Ты уже третий раз это делаешь

Stanislav
03.03.2018
10:41:54
ага, нашел "d.stdlibPath"

спасибо, помогло) а то без автокомплита тяжко немного ?

Dark
03.03.2018
12:23:39
спасибо, помогло) а то без автокомплита тяжко немного ?
Пфф, полжизни без автокомплита пишу и жив :DD

Всем привет, тут у меня такой вопрос

Pavel
03.03.2018
12:24:36
какой у жабоскрипта автокомплит

Dark
03.03.2018
12:25:36
Можно ли в темплейт миксине прописать поле, которое будет видно только в миксине? Или, на худой конец, приватное поле класса?

какой у жабоскрипта автокомплит
Обычный. Правда, поля объекта не всегда автокомплитит, а так вообще есть такие, что сами определяют параметры функции. В смысле их тип

Dark
03.03.2018
12:46:16
Можно

Google
Dark
03.03.2018
12:50:57
mixin template MExample() { // Вот это поле не должно быть видно за пределами // миксина или, в крайнем случае, класса int field; } class Example { mixin MExample; // Заменит field миксина. // Не критично, но не хотелось бы int field; } void main() { auto example = new Example; example.field; // Недопустимо }

Вроде понятно описал

Oleg
03.03.2018
13:21:58
Так просто private указать?

Разве так не работает?

Dark
03.03.2018
13:23:07
Я писал private int field; но это не сработало

Oleg
03.03.2018
13:23:34
Я писал private int field; но это не сработало
Должно работать. Есть один нюанс

Приватные поля видны в пределах файла

Это фича такая

Pavel
03.03.2018
13:24:35
Я писал private int field; но это не сработало
Каким именно образом не сработало? Надо в терминах ожидание/реальность

Приватные поля видны в пределах файла
кстати удобненькая фича) помогает избежать костылей иногда

Dark
03.03.2018
13:28:40
Каким именно образом не сработало? Надо в терминах ожидание/реальность
Все еще есть доступ к приватному полю. Хотя, с учетом этой фичи, понятно такое поведение

Странное, что компилятор даже не ругнулся

Это же по сути, нарушение инкапсуляции

Pavel
03.03.2018
13:29:56
Ну такое) термины что дышло

В ди единица инкапсуляции это модуль а не класс

Dark
03.03.2018
13:31:46
Т.е. из другого модуля уже нельзя получить приватное поле?

Pavel
03.03.2018
13:32:25
И впринципе логично, зачем тебе бороться с самим собой. Внутри модуля все друг другу доверяют

Google
Dark
03.03.2018
13:33:35
Логично-то логично, но в других C-подобных такого нет и легко малость охуеть с такого

Хотя бы предупреждение выдал бы

NullSanya
03.03.2018
13:33:55
Хотя да, иногда забывается.

Pavel
03.03.2018
13:34:51
Ну да, но это надо просто знать) предупреждения они для ошибочной ситуации в языке

Pavel
03.03.2018
13:35:21
лучше бы было два вида приватности

Evgeny
03.03.2018
13:35:34
даже три

Pavel
03.03.2018
13:35:40
Ну вот в плюсах емнип есть какие то друзья, которые тоже дают возможность лазить в свое приватное

Dark
03.03.2018
13:36:12
Зачем?
Легко забыть, что приватное поле-то

Или ты про private static?

Evgeny
03.03.2018
13:36:50
public, private, protected

NullSanya
03.03.2018
13:37:03
Легко забыть, что приватное поле-то
Да не, если придерживаться один класс - один модуль

Evgeny
03.03.2018
13:37:06
:)

NullSanya
03.03.2018
13:37:18
Кстати, а что значит static class?

Dark
03.03.2018
13:37:35
Кстати, а что значит static class?
Вроде все члены - статичные

Dark
03.03.2018
13:37:56
Бля

Google
NullSanya
03.03.2018
13:38:01
Dark
03.03.2018
13:38:01
Ушел в доку

Я конечно после JS все понимаю, но этого я не понимаю

Evgeny
03.03.2018
13:38:34
static class - это класс не содержащий ссылку на родительский контекст

по мне так оверинжиниринг

Dark
03.03.2018
13:39:12
Вложенные классы

Pavel
03.03.2018
13:39:18
public, private, protected
package ещё, но всё не то что хотел выразить

Evgeny
03.03.2018
13:39:49
если класс вложенный и не static, то внутри него будет неявное поле содержащее ссылку на родительский класс

this.outer

ИМХО, нахуй не нужно

NullSanya
03.03.2018
13:40:40
А если это не вложенный класс

Evgeny
03.03.2018
13:41:15
если в глобальном контексте, то авторматически static

Dark
03.03.2018
13:41:28
NullSanya
03.03.2018
13:41:36
И да, static для функций и переменных на уровне модуля зачем?

Evgeny
03.03.2018
13:42:12
А зачем тогда его пишут иногда?
если в глобальном контексте, то хз. на всякий случай, наверное :) или может копипаста была

NullSanya
03.03.2018
13:42:40
Хм...

Google
NullSanya
03.03.2018
13:42:51
Но я видел, что используют

Pavel
03.03.2018
13:44:11
В сложной бизнес логике всякие извраты бывают нужны)

NullSanya
03.03.2018
13:44:39
Pavel
03.03.2018
13:44:50
И вообщем там гораздо разнообразнее ситуации нежели в низкоуровневом программировании

Dark
03.03.2018
13:45:04
Evgeny
03.03.2018
13:46:06
На самом деле класс еще может быть определен внутри функции. тогда тоже создается this.outer содержащий контекст.

auto foo() { int x = 5; class Bar { void bar() { writeln(x); } } return new Bar(); }

если добавить static то не будет компилироваться

Pavel
03.03.2018
13:48:45
Это волдеморт тип?

Evgeny
03.03.2018
13:48:53
да

Evgeny
03.03.2018
13:50:13
если контекст внутри класса не нужен, то есть смысл ставить static, чтобы не создавать оверхеда в виде лишнего поля и возможного (по ошибке) захвата ненужного контекста с аллокацией.

А если добавить, то тогда неясно, откуда x? Замыкание?
типа того, примерно как function не может захватить контекст, а delegate может

Dark
03.03.2018
13:52:23
Не, у делегата есть ссылка на контекст, а мы прописываем статик, что бы его убрать

Evgeny
03.03.2018
13:53:22
функции члены класса имеют доступ к самому классу и в родительский контекст через this.outer

фактически два контекста захватывают

Dark
03.03.2018
13:56:22
Т.е. надо статик, что бы только один был? И компилятор не ломал голову, который из них юзаать?

Evgeny
03.03.2018
13:56:53
Т.е. надо статик, что бы только один был? И компилятор не ломал голову, который из них юзаать?
компилятор голову не ломает, он использует их оба одновременно

Dark
03.03.2018
13:58:00
Не, если бы было так, то он бы скомпилировал

Evgeny
03.03.2018
13:58:01
static нужен, чтобы компилятор не захватывал контекст вообще. В принципе он (компилятор) мог бы и сам догадаться, но он туповат пока

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