Хэш (аки list as) использование

Тема в разделе "Lotus - Программирование", создана пользователем lmike, 20 янв 2016.

  1. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    я тут обленился (лень было класс создавать для элемента)... и на шару запустил подобный код
    Код (LotusScript):
        Sub GetHashMap(lst List As Variant)
            Dim routineName As String
            routineName="HashMap"
            On Error GoTo ErrH
            'your code here
            Dim  entry As NotesViewEntry, cols List As String, cnt As Long
            Set entry=first
            Do While Not entry Is Nothing
                Dim idx As Integer
                idx=0
                cols(VALUE_COL)=entry.Columnvalues(columns(VALUE_COL))
                idx=idx+1
                cols(COMMENTS_COL)=entry.Columnvalues(columns(COMMENTS_COL))
                idx=idx+1
                cols(DOCORDER_COL)=entry.Columnvalues(columns(DOCORDER_COL))
                idx=idx+1
                cols(UNID_COL)=entry.Columnvalues(columns(UNID_COL))
                lst(entry.Columnvalues(columns(NAME_COL)))=(cols)
                cnt=cnt+1
                Set entry=Me.Getnext(entry)
            Loop
            Print {hash members Count:} cnt
    Quit:
            Exit Sub
    ErrH:
            Error Err, RaiseError
            Resume Quit
        End Sub
     
    ожидаемый вариант - получить одно значение для всех, но - НЕТ
    каким-то образом я получаю разные значение, а значит - операция присвоения (lst(entry.Columnvalues(columns(NAME_COL)))=(cols)) копирует данные, а не хранит сцылко
    idx остался от массива - тоже копирует, если даже убираю получение по значению (cols) - все одно - копирует
    мен такое поведение устраивает, но рвет шаблон :)
    проверяю так
    Код (LotusScript):
        Function testOut
            Dim routineName As String
            routineName="testOut"
            On Error GoTo ErrH
            'your code here
            Dim lst List As Variant
            Call Me.GetHashMap(Lst)
            me.PrintTrace({********************************************})
            ForAll cols In lst
                If me.debug Then _
                me.PrintTrace(ListTag(cols) _
                &cols(VALUE_COL) &KEY_SEP _
                &cols(COMMENTS_COL) &KEY_SEP _
                &cols(DOCORDER_COL) &KEY_SEP _
                &cols(UNID_COL))
            End ForAll
            'testOut=
    Quit:
            Exit Function
    ErrH:
            Error Err, RaiseError
            Resume Quit
        End Function
    вызов
    Код (LotusScript):
    Sub Click(Source As Button)
    On Error Goto ErrH
    Dim lst List As Variant, vnav As New ViewNavFlds(curdoc.UniversalID)
    vnav.IsDebug=True
    Call vnav.testOut
    Call vnav.ShowLog
    Quit:
    Exit Sub
    ErrH:
    Error Err, RaiseError
    End Sub
     
    #1 lmike, 20 янв 2016
    Последнее редактирование модератором: 20 янв 2016
  2. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    ткну пока сюда (таблицы трансформаций вьюшки), раздел для такой мелочи создавать лень
    получаем список программных имен для колонок
    для нотусни (дизигнер-Tools->DXL Utils->Transformer)
    Код (XML):
    <?xml version="1.0"?>
    <!-- Copyright IBM Corp. 2002, 2012  All Rights Reserved.             -->
     
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
        xmlns:dxl='http://www.lotus.com/dxl'>
        <xsl:output method='html'/>
        <xsl:strip-space elements='*'/>
       
        <xsl:template match='dxl:view'>
            <HTML>
                <HEAD>
                    <TITLE> Extract for Domino Design Elements </TITLE>
                    <LINK rel='stylesheet' type='text/css' href='drstyles.css' title='Style'/>
                </HEAD>
                <BODY>
                    <xsl:apply-templates select="dxl:column"/>
                </BODY>
            </HTML>
        </xsl:template>
        <xsl:template match='dxl:column'>
            <xsl:value-of select="@itemname"/><br/>
        </xsl:template>
        <!-- Match all text that has not yet been picked up by the templates, and discard it. -->
        <xsl:template match="text()">
        </xsl:template>
       
    </xsl:stylesheet>
     
    для обработки ДХЛ
    Код (XML):
    <?xml version="1.0" encoding="UTF-8"?>
    <!-- Copyright IBM Corp. 2002, 2012  All Rights Reserved.             -->
     
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
        xmlns:dxl='http://www.lotus.com/dxl'>
        <xsl:output method='text'/>
        <xsl:strip-space elements='*'/>
        <xsl:template match='dxl:view'>
            <xsl:apply-templates select="dxl:column"/>
        </xsl:template>
        <xsl:template match='dxl:column'>
            <xsl:value-of select="@itemname"/>
            <xsl:text>&#10;</xsl:text> <!-- newline character -->
        </xsl:template>
        <!-- Match all text that has not yet been picked up by the templates, and discard it. -->
        <xsl:template match="text()">
        </xsl:template>
       
    </xsl:stylesheet>
     
    [DOUBLEPOST=1453308567,1453308477][/DOUBLEPOST]куски со словами ИБМ - это фигня из штатной трансформации драл
     
  3. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    @lmike, хм... вот всегда думал, что копирует. Я в список часто кладу другой список, который заполняется заново каждый раз и данные не удаляются.
    Если бы были ссылки, то так делать было бы бессмысленно...
    @lmike, почему рвет шаблон?
     
  4. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    ну с классами так не пройдет... (ЕМНИП) и потому как "это", "обычно", передается по ссылке (пример - передача в листа или массива в ф-цию)
     
  5. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    @lmike, с объектами да, но в данном случае у тебя массив передается в список.
    А про объекты верно, ссылаются они.
     
  6. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    только передача в ф-цию будет по ссылке ;)
    такое "неоднозначное" поведение и вводит в ступор
     
Загрузка...
Похожие Темы - Хэш (аки list
  1. HelenHelen
    Ответов:
    1
    Просмотров:
    1.559
  2. sasha465
    Ответов:
    0
    Просмотров:
    1.467
  3. VladSh
    Ответов:
    27
    Просмотров:
    8.760

Поделиться этой страницей