2

FilterConditionsのメンバーのタイプを指定して、のQueryによって制限するにはどうすればよいBoolExprですExprか?

type Expr =
    | BoolExpr of Expr
    | ConstValue of Object
    | FieldAccess of string

type Query = {
    SelectList: Expr list
    FilterConditions: Expr.BoolExpr list  // Expr.BoolExpr - this is don't valid? why?
}

BoolExprのみでFilterConditions のタイプを制限したいExpr。出来ますか?それとも、AST の構造を再設計する必要がありますか? ...

4

1 に答える 1

2

ユニオン型の目的は、さまざまな型への均一なアクセスを提供することです。それを知っていれば、分析に応じていくつかのオプションがあります。

  • 1 つのケースがそれ自体で生きていると本当に感じている場合は、その型を作成してユニオン ケースでラップすることができます。

  • Query 型を使用する関数でパターン マッチを行い、パラメーターに均一な Expr 型を使用できます。その場合、それは良いことのように思えます。

于 2013-04-30T15:23:44.400 に答える