首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DU案例的名称

DU案例的名称
EN

Stack Overflow用户
提问于 2017-04-26 00:44:32
回答 1查看 160关注 0票数 3

如何通过填写magic来通过此测试?

代码语言:javascript
复制
type DU =
  | ACaseName
  | BThereCake

let magic (q: Quotation<_>): string =
  // smallest F# code in here?

open Expecto
let subject = magic <@ ACaseName @>
Expect.equal subject "ACaseName" "Should extract the NAME of the DU case"
EN

回答 1

Stack Overflow用户

发布于 2017-04-26 00:49:23

在这种情况下,可以执行以下操作:

代码语言:javascript
复制
open Microsoft.FSharp.Quotations

let magic (q: Expr<_>): string =
  match q with 
  | Patterns.NewUnionCase(case, args) -> case.Name
  | _ -> failwith "Not a union case"

let subject = magic <@ ACaseName @>

问题是,当工会案例有一些争论时,你想做什么。例如:

代码语言:javascript
复制
type DU =
  | ACaseName
  | BThereCake of int

如果您想从<@ BThereCake @>中提取名称,而不仅仅是从<@ BThereCake(12) @>中提取名称,则需要再添加一个大小写:

代码语言:javascript
复制
let magic (q: Expr<_>): string =
  match q with 
  | DerivedPatterns.Lambdas(_, Patterns.NewUnionCase(case, args))
  | Patterns.NewUnionCase(case, args) -> case.Name
  | _ -> failwith "Not a union case"

let subject = magic <@ BThereCake @>
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43616531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档