You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

F#中如何使用匿名类型替代显式类型声明简化代码编写

解决方案

你的需求可以实现,目前有两种常用的精简写法可选:

方案1:直接内联构造对象(零额外配置,开箱可用)

F# 支持直接在参数位置调用类型构造函数,不需要提前声明变量,同时可以省略new关键字(若目标类型实现了IDisposable仅会触发可选编译器提示,不影响运行),可以直接写成:

do! Async.AwaitTask(transferTextBox.TypeAsync(transferAmount, ElementHandleTypeOptions(Delay=15000f) ))

这种写法完全符合语法规范,比原始写法少了一行变量声明,和你预期的写法已经非常接近。

方案2:扩展方法重载(高频调用场景更简洁)

如果你需要频繁传入自定义Delay参数,可以提前定义一次方法扩展,后续所有调用都可以进一步简化:
首先在对应命名空间下定义扩展:

// 命名空间根据你实际使用的类库调整,以下为Playwright类库的示例
open Microsoft.Playwright

type ElementHandle with
    member this.TypeAsync(text: string, delay: float32) =
        this.TypeAsync(text, ElementHandleTypeOptions(Delay = delay))

定义完成后,调用时可以直接传入delay数值,写法更短:

do! Async.AwaitTask(transferTextBox.TypeAsync(transferAmount, 15000f))

补充说明

你尝试写的(Delay=15000f)不符合F#语法规范:它既不是合法的对象构造表达式,也不是匿名记录(F#匿名记录语法为{| Delay = 15000f |}),且默认情况下匿名记录无法隐式转换为ElementHandleTypeOptions类型,所以无法直接使用。

内容的提问来源于stack exchange,提问作者Martin Thompson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 16:45:01