
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
Сколько можно заходить сюда снова и снова? Ты уже третий раз это делаешь

NullSanya
03.03.2018
10:39:30

Stanislav
03.03.2018
10:41:54
ага, нашел "d.stdlibPath"
спасибо, помогло) а то без автокомплита тяжко немного ?

NullSanya
03.03.2018
11:10:27

Dark
03.03.2018
12:23:39
Всем привет, тут у меня такой вопрос

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

Dark
03.03.2018
12:25:36
Можно ли в темплейт миксине прописать поле, которое будет видно только в миксине? Или, на худой конец, приватное поле класса?
какой у жабоскрипта автокомплит
Обычный. Правда, поля объекта не всегда автокомплитит, а так вообще есть такие, что сами определяют параметры функции. В смысле их тип

Oleg
03.03.2018
12:45:54

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
Приватные поля видны в пределах файла
Это фича такая

Pavel
03.03.2018
13:24:35

Dark
03.03.2018
13:28:40
Странное, что компилятор даже не ругнулся
Это же по сути, нарушение инкапсуляции

Oleg
03.03.2018
13:29:49

Pavel
03.03.2018
13:29:56
Ну такое) термины что дышло
В ди единица инкапсуляции это модуль а не класс

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

NullSanya
03.03.2018
13:31:54

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
Ну вот в плюсах емнип есть какие то друзья, которые тоже дают возможность лазить в свое приватное

Evgeny
03.03.2018
13:36:11

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

Evgeny
03.03.2018
13:37:47

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 - это класс не содержащий ссылку на родительский контекст
по мне так оверинжиниринг

NullSanya
03.03.2018
13:39:01

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

Pavel
03.03.2018
13:39:18

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
Хм...

Dark
03.03.2018
13:42:45

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
да

Dark
03.03.2018
13:49:25

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

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 нужен, чтобы компилятор не захватывал контекст вообще. В принципе он (компилятор) мог бы и сам догадаться, но он туповат пока