我有这个示例函数签名:
let func1 (input:'a when 'a :> (IReadOnlyDictionary<string, string>)) =
...
Run Code Online (Sandbox Code Playgroud)
我也想允许'a成为一名IDictionary<string, string>). 所以任何一种类型都可以通过。input使用两个接口都支持的参数调用的代码TryGetValue。
是否可以指定这样的 OR 类型约束?如果是这样,那么具体的语法是什么?
我正在尝试使用 cdk bootstrap 命令。
>$env:CDK_NEW_BOOTSTRAP=1
>npx cdk bootstrap --cloudformation-execution-policies arn:aws:iam::aws:policy/AdministratorAccess aws://1234.../us-east-1
Run Code Online (Sandbox Code Playgroud)
我得到输出:
CDK_NEW_BOOTSTRAP set, using new-style bootstrapping.
Bootstrapping environment aws://1234.../us-east-1...
Run Code Online (Sandbox Code Playgroud)
我现在只是挂着。有一次我一个多小时后回来尝试,但它仍然卡住了。带有前缀 cdk 的 s3 存储桶确实出现了,但没有文件。
我尝试运行它几次,但总是一样。
什么会导致它陷入这样的困境?
根据 vt102 的评论,我从命令中发现了一些错误。
>$env:CDK_NEW_BOOTSTRAP=1
>npx cdk bootstrap --cloudformation-execution-policies --verbose --debug arn:aws:iam::aws:policy/AdministratorAccess aws://1234.../us-east-1
Run Code Online (Sandbox Code Playgroud)
现在的输出是:
Waiting for stack CDKToolkit to finish creating or updating...
Stack CDKToolkit has an ongoing operation in progress and is not stable (REVIEW_IN_PROGRESS (User Initiated))
Run Code Online (Sandbox Code Playgroud)
关于不稳定堆栈的第二行每隔几秒就会重复一次。
我进入 AWS 控制台并在 CloudFormation -> Stacks 下查看,但没有列出任何堆栈。我尝试更改状态过滤器,但没有任何效果。
如何找到并删除这个不稳定的堆栈并重新开始?
我记得当我第一次尝试 cdk 命令时,我在帐号和区域中出现了语法错误。它被卡住了,我杀了它。那可能就是它进入无效状态的时候。
那
我正在尝试设置一个 F# 函数,该函数采用由 FSharp.Data 类型提供程序为 JSON 生成的类型参数。这是使用文档中的一个简单示例的尝试。
#r "nuget: FSharp.Data,5.0.2"
open FSharp.Data
type Simple = JsonProvider<""" { "name":"John", "age":94 } """>
let simple = Simple.Parse(""" { "name":"Tomas", "age":4 } """)
let print (s:Simple) =
printfn $"{s.Age}"
printfn $"{s.Name}"
print simple
Run Code Online (Sandbox Code Playgroud)
这不会编译,并且在我的print函数中s没有AgeorName属性。
但是,如果我在创建简单实例后立即使用它而不尝试将其传递到函数中,则它可以正常工作。
#r "nuget: FSharp.Data,5.0.2"
open FSharp.Data
type Simple = JsonProvider<""" { "name":"John", "age":94 } """>
let simple = Simple.Parse(""" { "name":"Tomas", "age":4 } """)
printfn $"{simple.Age}"
printfn $"{simple.Name}"
Run Code Online (Sandbox Code Playgroud)
类型提供程序生成的类型的实例是否仅限于在创建它们的同一范围内使用?
如果我创建一个参数类型为 的 PowerShell 函数[scriptblock],哪种方法最适合执行函数内的脚本块?为什么?
我知道以下选项:
.源算子&(呼叫)操作员Invoke-Expression我有一个自定义脚本模块,其中一个功能取决于 AWSPowerShell 模块。我试图放入Import-Module AWSPowerShell该函数,但是当它在服务器上运行时它失败并说没有找到有效的模块。如果我Import-Module AWSPowerShell从以同一用户身份运行的同一台服务器上的命令行尝试,它工作正常。Import-Module从另一个模块内部调用似乎有问题。
我看到 NestedModules 可用于指定依赖项,因此我将其添加NestedModules @('AWSPowerShell')到模块清单中并Import-Module AWSPowerShell从需要它的函数中删除了。
现在,有关 AWSPowerShell 的错误发生在我从调用脚本导入我自己的自定义模块时。
确切的错误是: Import-Module : The module to process 'AWSPowerShell', listed in field 'NestedModules' of module manifest 'C:\Program Files\WindowsPowerShell\Modules\...MyModule.psd1' was not processed because no valid module was found in any module directory.
我确实注意到 AWSPowerShell 模块安装在与我的自定义模块不同的文件夹路径中。我的模块C:\Program Files\WindowsPowerShell\Modules在C:\Program Files (x86)\AWS Tools\PowerShell.
如何设置它以便可以加载 AWSPowerShell 以在我的模块中使用?
更新
我在下面复制了 AWSPowerShell 模块文件夹C:\Program Files\WindowsPowerShell\Modules,现在模块使用 NestedModules 方法成功导入。我所看到的关于 NestedModules 的一切似乎都是为了组合正在为更大解决方案而开发的模块。我不确定使用这种技术来导入这样的 3rd 方模块。我可能会滥用此功能。