问题标签 [hacklang]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
329 浏览

ubuntu - HHVM 已安装,但根据 error.log,环境中缺少类型检查器

我从文件中的以下内容开始:

它输出以下内容:

我将文件更改为:

我收到服务器错误 500 响应,然后检查 /var/log/hhvm/error.log 中的 hhvm 日志:

错误消息中提供的文档链接将我带到假定类型检查器已安装的页面。但是,它提供了安装类型检查器的链接。单击该链接告诉我:

啊,但我确实安装了 HHVM,这就是我得到上面显示的第一个输出的方式:

此外,文档说明了这一点:

这是我在运行$ ls -la /usr/bin/hh_client /usr/bin/hh_server 时看到的

从所有迹象来看,类型检查器看起来像是已安装!

这是我在 Ubuntu 14.04 上安装它的方法:

在 /etc/hhvm/server.ini 里面我有这个:

我已确保在我的所有配置中都有以下内容:

我已经重新启动了所有服务器。

我已经在运行 Ubuntu 14.04 的两个不同系统上执行了整个过程(包括 Ubuntu 14.04 的全新最小安装),结果相同。

0 投票
1 回答
194 浏览

generics - Hacklang:无法从(函数(...)返回向量:KeyedIterable)

我有一个可能返回 Map 或 Vector 的方法,并且由于这两种类型都实现了KeyedIterable——Vector<T>特别是实现了——我想我可以用一个返回类型KeyedIterable<int, T>来覆盖这两种情况。KeyedIterable<arraykey, T>但是,即使arraykey是比 更通用的类型int,这也不起作用。例如,类型检查器抱怨以下代码:

为什么我不能这样做?

0 投票
2 回答
3292 浏览

hhvm - 在 Map 上进行 Hack 迭代(map)

我有一个Map例如:

我想把它变成一个字符串:

我可以使用数组来执行此操作,如此 SO 答案中所述:

我已阅读Map::items并尝试过的文档:

但这什么也没打印。

我正在寻找一个像数组一样的oneliner,没有循环。

0 投票
1 回答
320 浏览

nfs - 通过 NFS 共享文件夹在 VirtualBox 上进行类型检查 Hack 代码

首先提到这个问题,然后这个恰当命名的编辑似乎是谨慎的,这似乎是相关的,并且使 hh_server 拒绝在 NFS 文件系统上运行。我对文件系统不是很熟悉,以前从未接触过 OCaml,所以在尝试完成问题标题时,我尝试编辑我所知道的内容:/etc/hh.conf并且/etc/hhvm/{php, server}.inihhvm.[server.]enable_on_nfs = true通过纯粹的猜测添加。没有骰子。

正如我从这个问题中理解的那样,更改源于hh_server守护程序无法通过 NFS 驱动器上的 inotify 注册对文件的更改,这是完全可以理解的。然而,我的 VirtualBox 纯粹是一个让我熟悉 Hack(即只运行类型检查器)的测试服务器,而且我之前已经在 sshfs 挂载(osxfuse)驱动器上成功运行了 hh_client。是否还有另一个我不知道的问题使这是一个坏主意?如果没有,我如何启用hh_server --check在我的 VBox NFS 共享文件夹上运行?

0 投票
2 回答
984 浏览

javascript - 如何成功混合 XHP 和 ReactJS 的组件实现

假设我们有以下情况:我们有一个带有帖子提要的博客。当页面加载时,应该已经<PostCard>加载了 3 个,在服务器端创建;用户将向下滚动或按下加载更多按钮,一些新的明信片应动态添加到页面中。

我有 Hack 的 XHP 组件<PostCard>,我们有 ReactJS 组件<PostCard>

那么,我应该:

  1. 在客户端,在 React 中实现整个事情并且只有 XHP 组件的render()方法constructReactInstance()?(我曾经做过类似的事情,但我注意到页面加载有一些延迟,比如“滞后”)。
  2. 在服务器端和客户端实现组件两次?(这是一个彻头彻尾的痛苦......)
  3. 还有什么……?

我希望我说清楚了,有人可以帮助我:smile_cat:

0 投票
1 回答
291 浏览

hhvm - Hack 命名函数是否完全是一等公民?

HHVM 3.9 不喜欢带有命名函数的三元语句,即使通过fun(), 但 ≥3.10 对它们完全没问题。然而,这似乎是少数情况之一,因为 3.9确实接受从具体函数返回的命名函数,以及接受传递给其他函数 ( 3v4l ) 的命名函数:

3.9 和 3.10 之间发生了什么变化?在 HHVM ≥3.10 中是否存在无法以这种方式引用和使用命名函数的情况?

0 投票
2 回答
201 浏览

typedef - Hacklang — 为什么我不能创建一个可以为空的循环 typedef?

我正在尝试实现一个类似容器的递归结构,我可以理解为什么普通循环 typedef 无法实现,但为什么以下内容也被禁止?

创建一个似乎很容易:

并且迭代一个也应该没有问题,对吧?

0 投票
1 回答
876 浏览

hacklang - 在 hacklang 中组合多种泛型类型

我正在尝试在hack中实现下划线的reduce功能。在下划线中,reduce 函数具有以下行为:

如果没有 memo 传递给 reduce 的初始调用,则不会在列表的第一个元素上调用 iteratee。相反,第一个元素在列表中的下一个元素上的 iteratee 调用中作为备忘录传递。

我尝试实现该功能:

这会导致错误:

我如何告诉类型检查器T == Tresult何时is_null($memo)

0 投票
1 回答
193 浏览

openshift - 在 openshift 上使用 hhvm 和 composer

我正在使用 Nginx HHVM 3.13.1、MySQL 5.5 和 phpMyAdmin 4.0 墨盒在 Openshift 上构建一个测试应用程序。这是我在使用 Composer 并依赖于 Facebook 的 xhp-lib 的 vagrant box 本地运行的工作应用程序。这是我当前的 composer.json

有两个问题 - 首先,我的 PHP 版本不够最新,其次,我无法像这样使用 HHVM 守护程序运行 composer install

结果,如果我明确使用“composer install”作为命令,所有依赖项都会失败,并显示一条消息“你正在使用 PHP 而不是 HHVM 运行它”,如果我真的尝试使用“hhvm: command not found”用 hhvm 运行它。

这是我正在使用的部署后挂钩,正如您所看到的,它实际上只是尝试下载和安装作曲家:

所以这是我的问题:如何在 openshift 中的 hhvm 下运行 composer,以便我可以使用 XHP,以及如何在 openshift 中升级我的 PHP 版本?

0 投票
2 回答
1323 浏览

php - Hack语言中的Memoize属性——缓存超时

Hack 具有<<__Memoize>>轻松缓存方法结果的属性。

如何在有限的时间内使用它来缓存某些数据库或 API 请求的结果?

假设我的代码经常需要数据库中的一些信息:

为了提高性能,我想将结果缓存一分钟。

如果数据发生变化,我的程序应该会在一分钟内看到它。我对结果陈旧一分钟没意见。

检查了官方文档