- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
private static Properties[] GetProperty(Properties[] collection, string property, string userName)
{
if (collection.Contains(property))
{
return collection[property];
}
else
{
throw new ArgumentException($"Property '{property}' for user '{userName}' was not found");
}
}
guest 23.12.2016 13:35 # −4
guest 23.12.2016 20:53 # 0
bormand 23.12.2016 20:55 # +1
Шарпик таки превратили в пыху?
guest 23.12.2016 21:22 # 0
guest 23.12.2016 21:24 # 0
guest 23.12.2016 21:25 # 0
guest 23.12.2016 21:29 # 0
https://www.python.org/dev/peps/pep-0498/
Хз, может нету, но будет
guest 23.12.2016 21:35 # −1
guest 23.12.2016 21:44 # 0
bayan 23.12.2016 21:51 # +2
пистон 2.7 надо запретить, а таких как ты -- насильно пересадить на 3.6
guest 23.12.2016 22:15 # +1
bayan 23.12.2016 22:19 # +2
обосцать и сжечь
guest 23.12.2016 22:30 # 0
Да и хуй с ним. Байтовые строки - это хорошо (я кретушок).
> асинкио
Да и хуй с ним. Есть торнадо.
> опт стат тип
Да и хуй с ним. Даже не знаю, что это.
> тупое ооп
Нормальное ооп: классы, объекты там. Это же скриптота, зачем там мощные средства для создания абстрактных фабрик интерфейсов?
guest 23.12.2016 22:36 # 0
bayan 23.12.2016 22:48 # +2
нет
>>Да и хуй с ним. Есть торнадо.
стандартное лучше кастомного
>>Нормальное ооп:
(object) ггг
>> Ну это точно не нужно
а ABC нужны? "string-like classes" нравяца?
Desktop 21.07.2021 15:55 # 0
bayan 23.12.2016 21:51 # 0
теперь и в питоне и в котлине и в руби и в перле и в выхе и с решеточке
guest 23.12.2016 22:16 # 0
bayan 23.12.2016 22:19 # 0
SwiftGovno 23.12.2016 22:29 # 0
bayan 23.12.2016 22:49 # 0
GravatarGovno 21.07.2021 00:17 # 0
LinuxGovno 21.07.2021 00:53 # 0
GravatarGovno 21.07.2021 00:54 # 0
LinuxGovno 21.07.2021 00:56 # 0
bormandinho 30.07.2021 22:47 # 0
WindowsGovno 30.07.2021 23:23 # 0
ru66oH4uk 21.07.2021 00:55 # +1
LinuxGovno 21.07.2021 00:59 # 0
GravatarGovno 21.07.2021 00:59 # +1
LinuxGovno 21.07.2021 01:01 # 0
GravatarGovno 21.07.2021 01:03 # 0
LinuxGovno 21.07.2021 01:04 # 0
pethu 21.07.2021 15:52 # 0
Desktop 21.07.2021 15:53 # 0
pethu 21.07.2021 15:55 # 0
guest6 21.07.2021 01:02 # +2
Завидовать ПХП может только тот, кто ничего кроме пхп не знает
GravatarGovno 21.07.2021 01:02 # +3
LinuxGovno 21.07.2021 01:03 # 0
gost 26.12.2016 09:40 # 0
Вот типа такого:
1024-- 26.12.2016 13:05 # +3
Т.е. шаблоны могут по строке с известной максимальной длиной парсить и подставлять сущности.
Только там sqr и f2 у меня были жёстко заданы.
boost::lambda можно расширять своими оперециями на своих типах: http://www.boost.org/doc/libs/1_60_0/doc/html/lambda/extending.html
Скажем, у нас есть KEY("abc"), который на самом деле key<'a','b','c'> - точно можно реализовать. Компайл тайм парсинг строки реализовать можно. Для %{abc} построить key<'a','b','c'> наверно можно.
Для каждого участка строки без форматирования запиливаем insert_string<строка>, для переменных - insert_variable<ключ>. Для конкатенации - concat<x, y>.
По умолчанию insert_variable<любая фигня>::value будет генерировать ошибку компиляции, а мы, если язык позволяет определить специализацию insert_variable<key<'a','b','c'>>, победим хотя бы в случае с глобальными переменными.
INTERPOLYACYYA("x: %{x}!") превратится в concat<concat<insert_string<'x',':',' '>, insert_variable<key<'x'>>>, insert_string<'!'>>::to_string()
Конечно, может в реальности наткнёмся на подводные камни, но можно попробовать.
1024-- 26.12.2016 13:25 # +2
При создании каждой переменной будет создаваться объект типа Variable, который
1. будет хранить ссылку на переменную
2. будет уметь преобразовывать её в строку
3. в конструкторе зарегистрирует переменную в скопе variables
4. в деструкторе удалит переменную из скопа variables
Т.е. в рукотворном динамическом контексте variables будет жить отображение нашей переменной из лексического столько же, сколько живёт сама переменная.
insert_variable будет доставать переменную из variables.
variables будет мапой со стеком
push(name, variable) добавит или перекроет name
pop(name) откроет предыдущую версию name
get(name) вернёт текущую Variable для name
1024-- 26.12.2016 13:37 # 0
Имея зарегистрированные на этапе исполнения переменные, мы просто вызываем функцию от строки, которая их печатает подставляет.
1024-- 26.12.2016 14:40 # +1
Richard M. Stallman, Zachary Weinberg - The C Preprocessor https://gcc.gnu.org/onlinedocs/cpp.pdf, 3.9 Directives Within Macro Arguments:
Occasionally it is convenient to use preprocessor directives within the arguments of a macro. The C and C++ standards declare that behavior in these cases is undefined. GNU CPP processes arbitrary directives within macro arguments in exactly the same way as it would have processed the directive were the function-like macro invocation not present.
Если мы магически сможем обернуть #include в макрос, то создав файлы "a", "b", "c", ..., которые хранят a, b, c, мы получим преобразование символа в токен.
С токенами уже можно работать, определяя фигню вида #define F(x) F_##x, а так же запиливать конкатенацию или преобразовывать в строке.
Если обернём include, получим INTERPOLATE("x",":"," ","{","x","}","!"), которое преобразуется в фигню вида S0x7e S0x5c ... (с кодами символов, полученных через include), которое преобразуем в "x" ":" " " x "!".
Desktop 21.07.2021 15:54 # +1
а, точно
Nyancat 21.07.2021 16:15 # +1
https://youtu.be/Jl8iYAo90pE
3oJIoTou_xyu 21.07.2021 17:20 # 0