1
kfll 2017-11-26 23:20:36 +08:00
T: type
U: 在字母表中处于 T 下一位 猜测。 |
2
lihongjie0209 2017-11-26 23:28:56 +08:00
当你在前端遇到任何不理解的问题去后端找找就清楚了, 毕竟都是借鉴(chao)后端的
|
3
lrz0lrz 2017-11-26 23:41:49 +08:00
@lihongjie0209 那么后端为什么要这样做呢?
|
4
think2011 OP @lihongjie0209 求后端指导
|
5
hanai 2017-11-27 00:02:50 +08:00 2
@kfll 说的对,看 https://docs.oracle.com/javase/tutorial/java/generics/types.html 的 Type Parameter Naming Conventions 部分
|
6
SuperMild 2017-11-27 00:07:42 +08:00
说沿用 Java 也对,但其实根据英语习惯和编程习惯,也很容易做出这样的设定,比如用了变量 i,那还需要一个临时变量时就会按顺序用 j,k
|
7
AngelCriss 2017-11-27 00:11:04 +08:00 via Android
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 代表匿名类。。 |
8
geelaw 2017-11-27 00:13:07 +08:00
其实我的习惯是 T1, T2, TIt, TForwardIt, ...TArgs, TFunc, TPred, TKey, TValue
|
9
sunjourney 2017-11-27 00:22:59 +08:00 via iPhone
@lihongjie0209 Typescript 作者是 C# 的作者,你说是抄?井底之蛙
|
10
kojirou 2017-11-27 00:24:21 +08:00
爱用什么用什么。。
|
11
Gonejack 2017-11-27 00:36:00 +08:00 via iPhone
这东西随便定,Java 里还有 K V 表示 key value,T R 表示参数和返回
|
12
FaiChou 2017-11-27 09:29:06 +08:00
swift 中大多也是 T, U, V, Element...
|
13
overflowHidden 2017-11-27 09:30:15 +08:00
@sunjourney 官方借鉴就是名正言顺地抄袭而已啊
|
14
think2011 OP 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 找到啦 谢谢各位! |
15
KuroNekoFan 2017-11-27 10:27:49 +08:00
看一下 java 基础就知道了
|
16
sunjourney 2017-11-27 10:50:38 +08:00
@overflowHidden #13 您脑回路特别清奇,自己抄自己?
|
17
overflowHidden 2017-11-27 10:57:12 +08:00
@sunjourney 我这说的抄袭是照搬的意思,因为搬得太生硬
|
18
sunjourney 2017-11-27 10:57:45 +08:00
@overflowHidden #13 而且泛型很多语言都有,把类、接口、枚举、全拿掉好了
|
19
sunjourney 2017-11-27 11:03:55 +08:00
@overflowHidden #17 用 T,U 是照搬还是 TypeScript 有泛型是照搬?官方文档里举的例子用 T, U 是因为是要在举例抽象的例子,swift, haskell 都是这么用,就不生硬了?实际项目都是和语义关联的,想用什么就用什么。
|
20
bramblex 2017-11-27 11:12:04 +08:00
|
21
HowToMakeLove 2017-11-27 11:15:51 +08:00
占变量类型的位啊,你可以随意起名
|
22
bramblex 2017-11-27 11:21:34 +08:00 1
如果你能把类型系统单独拿出来理解, 当成一个独立的语言, 类型进行独立的计算.
类型有值, 有变量, 有函数, 有运算符. 那你就能理解一切语言的类型系统了. typescript 这种已经算最简单的了 |
23
momocraft 2017-11-27 11:34:39 +08:00
感觉在非常泛的 (想不到更具体名字的) 型上用 T U 比较多。有较具体的背景时也可以用 E (lement) / Req / Res 等。
|
24
mooncakejs 2017-11-27 11:57:35 +08:00
随便用的,一般还有 P TPUEK
|
25
bombless 2017-11-27 12:50:55 +08:00 via Android
一般就是 t 是类型,多出一个类型变量就用下一个就是 u,再不行就 v,w 啥的。
不过分析里面一些人习惯用 u 和 v 做二元函数的参数名,所以经常是直接就用 u 和 v 了。 挺多玩类型的人数学素养还是不错的,就用上了数学中的习惯,也有一些人纯粹是模仿其他人的习惯这样大家都看的舒服 |
26
AngelCriss 2017-11-27 18:12:21 +08:00 via Android
@bramblex 活捉 jiji 的思念
|
27
qsnow6 2017-11-28 22:34:16 +08:00
js 是一门进化出来的语言,基本上就是缺啥了,就从别的成熟的语言搬点过来。所以现在撸点 JS 代码比以前要方便得多了
|