- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
class C
{
val: number;
constructor()
{
this.val = 2;
}
}
function o(val? : C)
{
print(val?.val);
}
function main()
{
o(new C());
o(null);
o();
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−8
class C
{
val: number;
constructor()
{
this.val = 2;
}
}
function o(val? : C)
{
print(val?.val);
}
function main()
{
o(new C());
o(null);
o();
}
Новый говнокод подоспел.... а как тебе такое слабый ужасный С/C++ ... ты так умеешь?
Результат работы:
C:\temp>C:\dev\TypeScriptCompiler\__build\tsc\bin\tsc.exe --emit=jit --opt --shared-libs=C:\dev\TypeScriptCompiler\__build\tsc\bin\TypeScriptRuntime.dll C:\temp\1.ts
2
0
0
ASD_77 20.12.2021 22:29 # 0
Soul_re@ver 20.12.2021 22:33 # +3
Дальше лень, но принцип понятен.
ASD_77 20.12.2021 22:35 # +1
bormand 20.12.2021 23:11 # +1
ASD_77 20.12.2021 23:15 # +1
bormand 20.12.2021 23:15 # +2
TOPT 21.12.2021 04:09 # 0
Fike 20.12.2021 22:49 # +1
ASD_77 20.12.2021 22:53 # 0
3.14159265 21.12.2021 04:01 # 0
Этого сахерку нету.
Хотя конечно можно поспорить нужен ли он в строго типизированном языке.
ASD_77 21.12.2021 14:25 # 0
Soul_re@ver 21.12.2021 14:30 # 0
ASD_77 21.12.2021 15:27 # 0
guest6 21.12.2021 19:10 # 0
guest6 21.12.2021 19:10 # 0
guest6 21.12.2021 19:10 # 0
guest6 21.12.2021 19:10 # 0
3.14159265 21.12.2021 19:14 # +1
Интересно, что получается в случае попытки приделать "хуёвое начало" к слову "хуй". Практически все опрошенные однозначно отвечали "хуюй". Однако, к слову "хуюй" уже ничего не приделаешь: попытка охуить хуюй даёт всё тот же самый хуюй.
Из этого вывод. Если сравнить процедуру хуения с дифференцированием (на каковое она похожа - в частности, и з-за редукций: (грелка)' = (стрелка)' = хуелка, то загадочный ХУЮЙ оказывается чем-то вроде показательной функции с основанием e: (ХУЮЙ)' = ХУЮЙ. Во всяком случае, исключительное место этого лингвистического адаманта, "не искажаемого никакоже", не подлежит сомнению.
Скорее всего, ХУЮЙ - это заклинание, слово Истинной Речи. Думаю, его действие состоит в том, чтобы рассеивать действия иных заклятий, прежде всего злохульных.
3.14159265 21.12.2021 04:03 # +2
Почему 0? А не undefined или null? Где консистентность с жс.
Даже в таком простом примере результат уже не понятен интуитивно. Фича стрёмная, если в пустяках начинаются шарады.
Steve_Brown 21.12.2021 11:44 # +1
3.14159265 21.12.2021 18:01 # 0
bormand 21.12.2021 18:02 # 0
3.14159265 21.12.2021 18:21 # 0
В соседнем треде мы уже выяснили что: There is no int type in Typescript.
А дефолтное значение пельменных в JS — undefined.
bormand 21.12.2021 18:26 # +1
guest6 21.12.2021 18:44 # 0
1. си: стат типизация нужна компилятору. Программист её реализует, так уж и быть
2. JS: урааа, никакой стат типизации
3. TS: стат типизация нужна программисту. Компилятор её реализует, так уж и быть
guest6 21.12.2021 19:10 # 0
guest6 21.12.2021 19:10 # 0
guest6 21.12.2021 19:10 # 0
ASD_77 21.12.2021 18:26 # 0
CHayT 21.12.2021 18:49 # 0
ASD_77 21.12.2021 19:09 # 0
guest6 21.12.2021 19:09 # 0
ASD_77 21.12.2021 18:27 # 0
guest6 21.12.2021 19:09 # 0
ASD_77 21.12.2021 14:29 # 0
bormand 21.12.2021 14:48 # +1
Какая типизация )))
ASD_77 21.12.2021 15:30 # 0
bormand 21.12.2021 17:43 # 0
Floating_cockerel 21.12.2021 17:45 # 0
ASD_77 21.12.2021 18:20 # 0
ASD_77 21.12.2021 18:21 # 0
bormand 21.12.2021 18:26 # 0
ASD_77 21.12.2021 18:28 # 0
bormand 21.12.2021 18:30 # 0
ASD_77 21.12.2021 19:05 # 0
bormand 21.12.2021 19:17 # 0
Т.е. x?.foo() при x == undefined вернёт undefined и ничего не позовёт?
З.Ы. Уроки тайпскрипта на гк.
3.14159265 21.12.2021 19:19 # 0
AFAIK эту пишутню сперва завезли в C#, а потом и остальные начали внедрять.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining
The optional chaining operator (?.) enables you to read the value of a property located deep within a chain of connected objects without having to check that each reference in the chain is valid.
The ?. operator is like the . chaining operator, except that instead of causing an error if a reference is nullish (null or undefined), the expression short-circuits with a return value of undefined. When used with function calls, it returns undefined if the given function does not exist.
This results in shorter and simpler expressions when accessing chained properties when the possibility exists that a reference may be missing. It can also be helpful while exploring the content of an object when there's no known guarantee as to which properties are required.
Там ещё такой синтаксис для методов
guest6 21.12.2021 19:22 # 0
getUser()?.foo?.bar?.buz
Кстати,
>вернёт undefined и ничего не позовёт?
напоминает яблочный nil
Soul_re@ver 21.12.2021 19:21 # +1
Тут нужно сорта говна undefined'a делать:
undefined<indeterminate>
undefined<novalue>
undefined<emptyobjectmethodcall>
guest6 21.12.2021 19:22 # 0
bormand 21.12.2021 19:22 # 0
Если интересна промежуточная фигня -- можно разбить на более мелкие выражения и проверить на нужных уровнях.
ASD_77 21.12.2021 21:37 # +1
ASD_77 21.12.2021 21:35 # 0
ASD_77 21.12.2021 18:30 # 0
1024-- 21.12.2021 11:50 # +2
u(gol!
Rooster 21.12.2021 15:48 # 0
Rooster 21.12.2021 15:35 # +1
Rooster 21.12.2021 15:47 # +1
Просто я сперва через va_list хотел нопейсать.
3.14159265 21.12.2021 18:06 # 0
guest6 21.12.2021 19:08 # +2