zoukankan      html  css  js  c++  java
  • map的使用

    本文中提到的map不是在AOT->Data Dicitionary->Maps中的Map,而是Axapta中的五个基础类Sets, maps, lists, arrays 和structs中的一个,为了保证效率这五个基础类是用C++写的,暴露出接口供X++调用.
    map是键值对,类似于C#里的HashTable.在看财务过账的代码时,发现了一段使用Map比较典型的代码,摘录在这里,免得以后找起来麻烦.
    代码路径如下:AO->Classes->SalesFormLetter->updateQueryBuild
      Map              mapSalesRecord;
      MapEnumerator    mapSalesRecordEnumerator;
      ;
       mapSalesRecord 
    = map::create(Formletter::getFormRecord(callerFormDataSource));
            mapSalesRecordEnumerator 
    = mapSalesRecord.getEnumerator();

            
    while (mapSalesRecordEnumerator.moveNext())
            
    {
                localSalesTable 
    = mapSalesRecordEnumerator.currentValue();

             }
    创建map时使用了map类的静态方法create,其入参为container.
    看一下FormLetter的静态方法getFormRecord.
    client static container getFormRecord(FormDataSource TradeRecord_ds)
    {
        common      TradeRecord;
        Map         mapTradeRecord 
    = new map(TYPES::INTEGER,TYPES::RECORD);

        
    for (TradeRecord = TradeRecord_ds.getFirst(true? TradeRecord_ds.getFirst(true) : TradeRecord_ds.cursor(); TradeRecord; TradeRecord = TradeRecord_ds.getNext())
        
    {
            mapTradeRecord.insert(TradeRecord.RecId,TradeRecord);
        }


        
    return mapTradeRecord.pack();
    }

    虽然感觉上面的代码有些过烦,不过做为map的使用示例还是比较适合的.当然也可以用MapIterator类来遍历map,在while()里的将是mapIterator.more(),取值用mapIterator.value,move到下一条用mapIterator.next(),如下所示:
    MapIterator  mapIterator;
    ;
    mapIterator 
    = new MapIterator(mapSalesRecord);
    while(mapIterator.more())
    {
         localSalesTable 
    = mapIterator.value();
         
         mapIterator.next();
    }

  • 相关阅读:
    c# 反射应用之工厂
    UnityContainer 实现DI
    TinyMCE 的音乐插件/mp3 music insert plugin
    Django on IronPython and Windows
    说说分页
    Katze 简单的.net "ORM"框架
    Discuz!NT在64位Windows下运行的问题
    恐怖的迅雷
    基于Gettext的asp.net网站多语言解决方案
    微软是如何输掉API之战(下)
  • 原文地址:https://www.cnblogs.com/Farseer1215/p/508542.html
Copyright © 2011-2022 走看看