當前位置: 首頁>>代碼示例>>Golang>>正文


Golang expression.Function類代碼示例

本文整理匯總了Golang中github.com/couchbase/query/expression.Function的典型用法代碼示例。如果您正苦於以下問題:Golang Function類的具體用法?Golang Function怎麽用?Golang Function使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。


在下文中一共展示了Function類的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。

示例1: VisitFunction

func (this *DNF) VisitFunction(expr expression.Function) (interface{}, error) {
	var exp expression.Expression = expr

	switch expr := expr.(type) {
	case *expression.IsBoolean:
		exp = expression.NewLE(expr.Operand(), expression.TRUE_EXPR)
	case *expression.IsNumber:
		exp = expression.NewAnd(
			expression.NewGT(expr.Operand(), expression.TRUE_EXPR),
			expression.NewLT(expr.Operand(), expression.EMPTY_STRING_EXPR))
	case *expression.IsString:
		exp = expression.NewAnd(
			expression.NewGE(expr.Operand(), expression.EMPTY_STRING_EXPR),
			expression.NewLT(expr.Operand(), expression.EMPTY_ARRAY_EXPR))
	case *expression.IsArray:
		exp = expression.NewAnd(
			expression.NewGE(expr.Operand(), expression.EMPTY_ARRAY_EXPR),
			expression.NewLT(expr.Operand(), _EMPTY_OBJECT_EXPR))
	case *expression.IsObject:
		// Not equivalent to IS OBJECT. Includes BINARY values.
		exp = expression.NewGE(expr.Operand(), _EMPTY_OBJECT_EXPR)
	}

	return exp, exp.MapChildren(this)
}
開發者ID:pkdevboxy,項目名稱:query,代碼行數:25,代碼來源:dnf.go

示例2: VisitFunction

// Function
func (this *sargFactory) VisitFunction(expr expression.Function) (interface{}, error) {
	switch expr := expr.(type) {
	case *expression.RegexpLike:
		return newSargLike(expr, expr.Regexp()), nil
	}

	return newSargDefault(expr), nil
}
開發者ID:pkdevboxy,項目名稱:query,代碼行數:9,代碼來源:sarg_factory.go

示例3: VisitFunction

// Function
func (this *JSConverter) VisitFunction(expr expression.Function) (interface{}, error) {
	var buf bytes.Buffer

	functionExpr := &funcExpr{operands: list.New()}

	//buf.WriteString("(")
	var nopush bool
	var nobracket bool
	var pushOperands bool
	var writeLater bool
	var functionName string

	switch strings.ToLower(expr.Name()) {
	case "lower":
		functionName = ".toLowerCase()"
		writeLater = true
	case "upper":
		functionName = ".toUpperCase()"
		writeLater = true
	case "object_length":
		fallthrough
	case "array_length":
		fallthrough
	case "poly_length":
		fallthrough
	case "string_length":
		fallthrough
	case "length":
		functionName = ".length"
		writeLater = true
	case "str_to_millis":
		fallthrough
	case "millis":
		nopush = true
		buf.WriteString("Date.parse(")
	case "contains":
		functionExpr.name = ".indexOf("
		this.stack.Push(functionExpr)
		pushOperands = true
	case "substr":
		functionExpr.name = ".substring("
		this.stack.Push(functionExpr)
		pushOperands = true
	case "now_millis":
		buf.WriteString("Date.now().toString()")
	case "meta":
		buf.WriteString("meta")
		nobracket = true
	default:
		nopush = true
		buf.WriteString(expr.Name())
		buf.WriteString("(")
	}

	var firstOp expression.Expression

	for i, op := range expr.Operands() {
		if pushOperands == true {

			if i == 0 {
				firstOp = op
				continue
			} else {
				functionExpr.operands.PushBack(op)
			}

		} else {
			if i > 0 {
				buf.WriteString(", ")
			}

			if op == nil {
				buf.WriteString("*") // for count(*)
			} else {
				buf.WriteString(this.Visit(op))
			}
		}
	}

	if firstOp != nil {
		buf.WriteString(this.Visit(firstOp))
	}

	if nopush == true && nobracket == false {
		buf.WriteString(")")
	}

	if writeLater == true {
		buf.WriteString(functionName)
	}

	return buf.String(), nil
}
開發者ID:pkdevboxy,項目名稱:query,代碼行數:94,代碼來源:jsconverter.go


注:本文中的github.com/couchbase/query/expression.Function類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。