Oop 为什么容器类被内置类型所取代?
仅引用黑客文档: 传统向量、映射和集 在新代码中应避免使用这些容器类型;使用dict, 键集,而不是vec 在哈克的早期,这个库提供了可变和不变的特性 名为的泛型类类型:Vector、ImmVector、Map、ImmMap、Set和 伊姆塞特。但是,它们已被vec、dict和keyset取代, 在所有新代码中都建议使用。每个泛型类型都有一个 对应的文字形式。例如,类型为 向量可以使用向量{22,33,$v}初始化,其中$v 是int类型的变量 我想知道为什么会有这样的变化。 我的意思是,PHP的一个弱点是它有糟糕的oop标准库。 例如:Oop 为什么容器类被内置类型所取代?,oop,collections,standard-library,hacklang,Oop,Collections,Standard Library,Hacklang,仅引用黑客文档: 传统向量、映射和集 在新代码中应避免使用这些容器类型;使用dict, 键集,而不是vec 在哈克的早期,这个库提供了可变和不变的特性 名为的泛型类类型:Vector、ImmVector、Map、ImmMap、Set和 伊姆塞特。但是,它们已被vec、dict和keyset取代, 在所有新代码中都建议使用。每个泛型类型都有一个 对应的文字形式。例如,类型为 向量可以使用向量{22,33,$v}初始化,其中$v 是int类型的变量 我想知道为什么会有这样的变化。 我的意思是,PHP
str\u replace
和array\u值
方法在字符串/数组类型本身之外。PHP标准库不一致,有时我们必须将数组作为第一个参数传递,有时作为第二个参数传递
我很高兴看到Hack为集合引入了真正的OOP封装。你知道他们为什么退后编写实用程序类,比如
C\
,Dict\
,Keyset\
和Vec\
将来是否会向内置类型添加方法(例如:Str\start\u with
=>“toto”->startsWith(“t”)
)?基于此,似乎主要优势在于数组是本机值,而不是对象。这有两个重要后果:
ImmMap
在Tk
中是不变的,这仅仅是因为(函数(Tk):Tv)
getter。同时,dict
在两个类型参数中都是协变的,这要归功于对写入时复制的固有变异保护
->
引用链可以直接替换为管道操作符。集合类型上的特权“标准函数”和自定义用户函数之间也不再有界限。最后,集合类型当然是final
,因此它们的客观本质并没有为最终用户提供任何实际的分层或多态优势。基于此,主要优势似乎是数组是本机值,而不是对象。这有两个重要后果:
ImmMap
在Tk
中是不变的,这仅仅是因为(函数(Tk):Tv)
getter。同时,dict
在两个类型参数中都是协变的,这要归功于对写入时复制的固有变异保护
->
引用链可以直接替换为管道操作符。集合类型上的特权“标准函数”和自定义用户函数之间也不再有界限。最后,收集类型当然是final
,因此它们的客观本质并没有为最终用户提供任何实际的层次或多态优势