|
kfllNov 26, 2017
1
T: type
U: 在字母表中处于 T 下一位 猜测。 |
|
lihongjie0209Nov 26, 2017
2
当你在前端遇到任何不理解的问题去后端找找就清楚了, 毕竟都是借鉴(chao)后端的
|
|
lrz0lrzNov 26, 2017
3
@lihongjie0209 那么后端为什么要这样做呢?
|
|
4
@lihongjie0209 求后端指导
|
|
5
@kfll 说的对,看 https://docs.oracle.com/javase/tutorial/java/generics/types.html 的 Type Parameter Naming Conventions 部分
|
|
SuperMildNov 27, 2017
6
说沿用 Java 也对,但其实根据英语习惯和编程习惯,也很容易做出这样的设定,比如用了变量 i,那还需要一个临时变量时就会按顺序用 j,k
|
|
AngelCrissNov 27, 2017 via Android
7
template<typename F, typename Arg>
struct is_type_match { private: template<typename Func> struct extract; template<typename R, typename A> struct extract<R(A)> { using ires = R; using iarg = A; }; template<typename R, typename A> struct extract<R(*)(A)> : extract<R(A)> {}; template<typename R, typename A> struct extract<std::function<R(A)>> : extract<R(A)> {}; template<typename R, typename Class, typename A> struct extract<R(Class::*)(A)> : extract<R(A)> {}; template<typename R, typename Class, typename A> struct extract<R(Class::*)(A) const> : extract<R(A)> {}; template<typename R, typename Class, typename A> struct extract<R(Class::*)(A) volatile> : extract<R(A)> {}; template<typename R, typename Class, typename A> struct extract<R(Class::*)(A) const volatile> : extract<R(A)> {}; template<typename lambda> struct extract : extract<decltype(&lambda::operator())> {}; template<typename lambda> struct extract<lambda&> : extract<decltype(&lambda::operator())> {}; template<typename lambda> struct extract<lambda&&> : extract<lambda&> {}; public: using arg = typename std::remove_cv< typename std::remove_reference<Arg>::type>::type; using iarg = typename std::remove_cv< typename std::remove_reference<typename extract<F>::iarg>::type>::type; constexpr static bool arg_same = std::is_same<arg, iarg>::value; }; ------------------- 比如这里面 F 代表 function,A,Arg 代表参数,R 代表返回值,Class 代表类,lambda 代表匿名类。。 |
|
geelawNov 27, 2017
8
其实我的习惯是 T1, T2, TIt, TForwardIt, ...TArgs, TFunc, TPred, TKey, TValue
|
|
sunjourneyNov 27, 2017 via iPhone
9
@lihongjie0209 Typescript 作者是 C# 的作者,你说是抄?井底之蛙
|
|
kojirouNov 27, 2017
10
爱用什么用什么。。
|
|
GonejackNov 27, 2017 via iPhone
11
这东西随便定,Java 里还有 K V 表示 key value,T R 表示参数和返回
|
|
ethusdtNov 27, 2017
12
swift 中大多也是 T, U, V, Element...
|
|
overflowHiddenNov 27, 2017
13
@sunjourney 官方借鉴就是名正言顺地抄袭而已啊
|
|
14
E - Element (used extensively by the Java Collections Framework)
K - Key N - Number T - Type V - Value S,U,V etc. - 2nd, 3rd, 4th types @hanai 找到啦 谢谢各位! |
|
KuroNekoFanNov 27, 2017
15
看一下 java 基础就知道了
|
|
sunjourneyNov 27, 2017
16
@overflowHidden #13 您脑回路特别清奇,自己抄自己?
|
|
overflowHiddenNov 27, 2017
17
@sunjourney 我这说的抄袭是照搬的意思,因为搬得太生硬
|
|
sunjourneyNov 27, 2017
18
@overflowHidden #13 而且泛型很多语言都有,把类、接口、枚举、全拿掉好了
|
|
sunjourneyNov 27, 2017
19
@overflowHidden #17 用 T,U 是照搬还是 TypeScript 有泛型是照搬?官方文档里举的例子用 T, U 是因为是要在举例抽象的例子,swift, haskell 都是这么用,就不生硬了?实际项目都是和语义关联的,想用什么就用什么。
|
|
bramblexNov 27, 2017
20
|
|
HowToMakeLoveNov 27, 2017
21
占变量类型的位啊,你可以随意起名
|
|
22
如果你能把类型系统单独拿出来理解, 当成一个独立的语言, 类型进行独立的计算.
类型有值, 有变量, 有函数, 有运算符. 那你就能理解一切语言的类型系统了. typescript 这种已经算最简单的了 |
|
momocraftNov 27, 2017
23
感觉在非常泛的 (想不到更具体名字的) 型上用 T U 比较多。有较具体的背景时也可以用 E (lement) / Req / Res 等。
|
|
mooncakejsNov 27, 2017
24
随便用的,一般还有 P TPUEK
|
|
bomblessNov 27, 2017 via Android
25
一般就是 t 是类型,多出一个类型变量就用下一个就是 u,再不行就 v,w 啥的。
不过分析里面一些人习惯用 u 和 v 做二元函数的参数名,所以经常是直接就用 u 和 v 了。 挺多玩类型的人数学素养还是不错的,就用上了数学中的习惯,也有一些人纯粹是模仿其他人的习惯这样大家都看的舒服 |
|
AngelCrissNov 27, 2017 via Android
26
@bramblex 活捉 jiji 的思念
|
|
qsnow6Nov 28, 2017
27
js 是一门进化出来的语言,基本上就是缺啥了,就从别的成熟的语言搬点过来。所以现在撸点 JS 代码比以前要方便得多了
|