Marklogic 一个递归方法的实现

以下代码来自于roxy 中关于deployment 中的流程部分。

declare function setup:add-phrase-throughs-R(

  $admin-configas element(configuration),

  $databaseas xs:unsignedLong,

  $phrase-throughsas element(db:phrase-through)*) as element(configuration)

{

  if($phrase-throughs) then

    setup:add-phrase-throughs-R(

      admin:database-add-phrase-through($admin-config,$database, $phrase-throughs[1]),

      $database,

      fn:subsequence($phrase-throughs,2))

  else

    $admin-config

};

逻辑代码很简单,就是一个递归来实行将element-phrase-through建立到数据库中去。

解释:

add-phrase-throughs-R:是一个递归的方法。

fn:subsequence($phrase-throughs,2))表示从$phrase-throughs中取得下一个element对象,并将其作为输入参数带入到递归方法中。

这样,递归方法每次执行体中只针对当下$phrase-throughs[1]这个对象做业务(这里是database-add-phrase-through),通过递归带入下一个element进行处理。

实际上,这个递归的处理逻辑非常想C#中的foreach


另外,marklogic有一个标准的typeswith模式来做迭代的,你可以在官方snippet.xqy中看到源代码。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值