在某些编程语言中,尤其是在C语言中,存在具有函数声明的头文件.这些函数"标题"位于代码之前,并且在具有相互递归的情况下是必需的.当函数头放在头文件中时,它们还有助于链接多个C文件一起编译的情况.
我对C文件中函数头的理解是它们有助于编译,因为它们定义函数的类型,如果它在定义之前被调用.如果这是错误的,我会很高兴能够得到纠正和更好的信息,但这是我对它的理解.
所以我不明白,为什么其他语言 - 在这种情况下我单挑OCaml - 没有功能标题.在OCaml中,存在具有签名的模块,但是签名不允许您的函数实例化是相互递归的,即使给出了类型.为了在OCaml中进行相互递归,你需要使用"和"关键字,或者在另一个函数中本地定义一个函数(据我所知).
(* version 1 *)
let rec firstfun = function
| 0 -> 1
| x -> secondfun (x - 1)
and secondfun = function
| 0 -> 1
| x -> firstfun x
(* version 2 *)
let rec firstfun = function
| 0 -> 1
| x ->
let rec secondfun = function
|0 -> 1
| x -> firstfun x in
secondfun (x - 1)
Run Code Online (Sandbox Code Playgroud)
那么为什么会这样呢?它与多态性有关吗?有没有我不考虑的编译瓶颈?
我有 2 个 AWS CDK 应用程序在单独的 AWS 账户中运行,我正在尝试添加 CDK 以在一个 AWS 账户中获取 lambda 以订阅另一个 AWS 账户中的通知。
我尝试在 lambda 帐户中添加订阅,但这不起作用,因为 SNS 帐户未授予权限。
SNS账号中的CDK:
val myTopic = Topic(this, "my-topic-id", TopicProps.builder()
.displayName("topicName")
.topicName("topicName")
.build())
Run Code Online (Sandbox Code Playgroud)
Lambda 账户中的 CDK:
val myLambda = Function(...)
val crossAccountTopic = Topic.fromTopicArn(this, "topic-id", "arn:aws:sns:<region>:<accountId>:topicName")
crossAccountTopic.addSubscription(LambdaSubscription(myLambda))
Run Code Online (Sandbox Code Playgroud)
有没有人尝试过这样的事情?有没有办法完全通过更改两个帐户中的 CDK 来授予访问权限?还是需要手动操作?可能有一种方法可以通过 IAM 角色授予访问权限来实现此目的,因此我将对此进行进一步调查。
使用 CDK 将 ApiGateway 连接到 lambda,我们首先创建一个 RestApi(),然后创建一个 LambdaIntegration 将 Apigateway 连接到 lambda。使用 lambda 别名时如何执行此操作?
如何将 ApiGateway 指向特定的 Lambda 别名解释了如何在没有 CDK 的情况下将 ApiG 连接到 Lambda 别名。如何将其转换为 CDK?
我们的目标是为与 API Gateway 一起使用的 lambda 添加预配置并发和自动缩放。