Hacklang:为什么将容器类替换为内置类型?

问题描述 投票:0回答:1

只需引用黑客文档中的引言:

旧式向量,地图和集合

这些容器类型应在新代码中避免;使用字典,键集,而改为使用vec。

[在Hack的早期,图书馆提供了可变且不变的通用类类型,称为:Vector,ImmVector,Map,ImmMap,Set和ImmSet。但是,这些已被vec,dict和keyset取代,建议在所有新代码中使用它。每个通用类型都有一个相应的文字形式。例如,一个类型的变量向量可以使用向量{22,33,$ v}初始化,其中$ v是int类型的变量。]​​>

我想知道为什么要进行此更改。我的意思是,PHP的弱点之一是它的oop标准库不好。例如:str_replacearray_values方法不在字符串/数组类型本身之外。 PHP标准库不一致,有时我们必须将数组作为第一个参数,其他时候作为第二个参数...

[我很高兴看到Hack为集合引入了真正的OOP封装。您知道为什么他们后退并编写实用程序类,例如C\Dict\Keyset\Vec\吗?将来会不会增加一些向内置类型添加方法的示例(例如:Str\starts_with => "toto"->startsWith("t"))?

仅引用hack文档中的引言:Legacy Vector,Map和Set这些容器类型应该在新代码中避免;请改用dict,keyset和vec。在Hack生命的早期,...

oop collections standard-library hacklang
1个回答
0
投票

基于Dwayne Reeves' blog post introducing HSL,似乎主要的优点是数组是本机值,而不是对象。这有两个重要的后果:

© www.soinside.com 2019 - 2024. All rights reserved.