Подсказки для языков декларативного программирования понимания? [закрытый]

Код ниже, кажется, работает сейчас:

With ws1

    ColumnTwo = .Cells(1, .Columns.Count).End(xlToLeft).Column
    LastRow = .Cells(.Rows.Count, lastColumn).End(xlUp).Row

    ColumnOne = ColumnTwo - 1


    With ws2
    Set aDataRange = ws2.Range("D47:D61")
    Set pDataRange = ws2.Range("E47:E61")
        If Application.WorksheetFunction.CountA(aDataRange) <> 0 Then
            MsgBox ("ColumnOne")
            With ws1
                For i = 1 To LastRow
                    If .Cells(i, ColumnOne).Value = 0 Then
                        .Rows(i).EntireRow.Hidden = True
                    End If

                Next i
            End With

        ElseIf Application.WorksheetFunction.CountA(pDataRange) <> 0 Then
            MsgBox ("ColumnTwo")
            With ws1
                For i = 1 To LastRow
                    If .Cells(i, ColumnTwo).Value = 0 Then
                        .Rows(i).EntireRow.Hidden = True
                    End If

                Next i
            End With
        Else
            Exit Sub
        End If
    End With
End With

Почему мне нужно определить области диапазона для D47: D61 / E47: E61 на ws2 отдельно? Почему бы «ws2.Application.WorksheetFunction.CountA (« Range »)» не применяться к диапазону на ws2, даже если он содержался в «With ws2»?

5
задан 6 revs 26 August 2009 в 10:09
поделиться

8 ответов

Мне пришлось обучать XSL (или XSLT, как хотите) в начале века :), и это совсем другой мир. Это, однако, основа для смены парадигмы: вы должны понимать, что декларативные языки действительно разные. Самый важный совет, который у меня есть, - продолжать изучать решения других людей, работать и действительно пытаться перестать думать в FLOW . Хуже всего то, что в XSL есть «если» и «еще», но обычно есть другой способ сделать что-то.

В отличие от изучения объектно-ориентированного программирования, в XSL (или, как я полагаю, на любом декларативном языке) вам не удастся сделать то, что вы пытаетесь сделать, если вы не сделаете это декларативно.

Итак, отчасти ответ: «заткнись и делай работу», как ты предлагаешь, но более важным моментом является осознание того, что большая часть работы заключается в том, чтобы обдумать смену парадигмы. Итак, настоящий ответ таков: «не спускайте глаз с изменения парадигмы». Вы должны перестать думать в потоке и начать думать в терминах правил, которые могут действовать в любом порядке ... если они сделано правильно, неважно, когда они стреляют. Когда вы наконец задумываетесь о правилах, а не КОГДА что-то происходит, вы начинаете понимать сдвиг.

3
ответ дан 13 December 2019 в 22:15
поделиться

Найдите несколько примеров с объяснением «почему» от того, кто действительно знает язык. Главное - это изучение шаблонов и идиом.

Я подозреваю, что вы пытаетесь делать императивные вещи в декларативной сфере, что означает, что вы мыслите в терминах шагов. Запишите поток данных в терминах требуемых входов + функции этих входов без сохранения состояния и посмотрите, поможет ли это.

Попробуйте функциональный или функциональный язык, такой как ML или Scheme.

2
ответ дан 13 December 2019 в 22:15
поделиться

Я не знаю, в чем заключаются ваши конкретные проблемы с Xaml (и я сам не использовал его), но я обнаружил, что при использовании технологий на основе XML, таких как XSLT, немного LISP или Опыт работы со схемой может иметь большое значение. Возможно, вы захотите поиграть с превосходной системой схем, доступной бесплатно по адресу http://www.plt-scheme.org .

1
ответ дан 13 December 2019 в 22:15
поделиться

Я учился в колледже (языки программирования). Было такое чувство, будто я несколько раз бился головой о кирпичную стену, но примерно на 3/4 пути через класс я понял, что стены больше нет; Я бился головой ни о чем несколько недель. Это было довольно сюрреалистическое ощущение.

Думаю, любой другой способ не будет иметь такого же очарования. Прочтите Геделя, Эшера, Баха; много слушаю Эмерсона, Лейка, Палмера и Кайхосру Сорабджи; покурите гянджу и положите время.

0
ответ дан 13 December 2019 в 22:15
поделиться

Я считаю, что самый простой способ «разобраться» в языке - это просто начать использовать его исключительно для всего вашего кодирования. С полностью новым языком я бы сказал, что для меня кривая обучения составляет примерно 2 недели программирования примерно по 4-5 часов в день. После этого он внезапно «щелкает», и вы можете меньше полагаться на руководства и документы.

0
ответ дан 13 December 2019 в 22:15
поделиться

Как и Binary Worrier, у меня была долгая история с такими вещами, как C, C ++, MFC и т. Д., И я быстро освоил XAML, WPF и C #. У меня был побочный путь через HTML, Javascript и XSLT, который, как мне кажется, очень помог мне в подготовке к XAML.

Основная идея XAML довольно проста - все зависит от того, что вы показываете , не то, что вы делаете . Сложность с XAML заключается в том, что нужно изучить множество деталей реализации, и вы в конечном итоге изучаете их все одновременно, чтобы иметь возможность делать большую часть чего угодно.

Я, вероятно, мог бы быть более полезным, если бы вопрос был более конкретным.

1
ответ дан 13 December 2019 в 22:15
поделиться

Я вижу, где это может взорвать вам голову. Все перечисленные вами языки действительно очень похожи (процедурные).

Как только вы это усвоите, я настоятельно рекомендую вам также изучить функциональный язык . Вы также можете найти это трудным, но изучение этого очень поможет вашим общим навыкам программирования. У вас будет целый набор новых приемов (даже в процедурных языках), и вы больше никогда не будете бояться рекурсии.

1
ответ дан 13 December 2019 в 22:15
поделиться

Вспомните свою любимую «невежество программиста» . Первый фрагмент кода явно процедурный. Во втором фрагменте вы декларативно заявляете , что для того, чтобы процент был действительным, он должен быть от 0 до 100.

Так что, я думаю, у вас не возникнет проблем с изучением декларативных языков программирования как пока вы работаете над этим достаточно усердно ... нет королевского пути к геометрии

1
ответ дан 13 December 2019 в 22:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: