Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: мысль. параметры функции Добавлено: 15.01.11 18:27  

Автор вопроса:  Winand | Web-сайт: winandfx.narod.ru
на 13й год существования языка я узнал, что параметры функции можно указывать в произвольном порядке:) Не знаю для чего это придумано, но забавно
Private Sub Form_Load()
    Call func(two:=2, three:=3, one:=1)
End Sub

Private Sub func(ByVal one As Long, ByVal two As Long, ByVal three As Long)
    Debug.Print one, two, three
End Sub

Ответить

  Ответы Всего ответов: 23  

Номер ответа: 1
Автор ответа:
 AWP



ICQ: 345685652 

Вопросов: 96
Ответов: 1212
 Web-сайт: xawp.narod.ru
 Профиль | | #1
Добавлено: 15.01.11 19:10
интересно)))...

Ответить

Номер ответа: 2
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #2 Добавлено: 15.01.11 21:13
Посмотри в Office DOM некоторые функции. Бывает и 20+ параметров, все из которых опциональные. А таким способом получится более-менее удобно задать только нужные.

Ответить

Номер ответа: 3
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #3
Добавлено: 16.01.11 00:26
Да, в это есть смысл) Хотя когда параметров много часто задают их в структуре, ссылка на которую передается в функцию

Ответить

Номер ответа: 4
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #4 Добавлено: 16.01.11 23:27
так делают уже менее криворукие люди..

Ответить

Номер ответа: 5
Автор ответа:
 udn79



Вопросов: 2
Ответов: 95
 Профиль | | #5 Добавлено: 03.02.11 08:37
Dim b() As Byte
Const s = "нужно книжки хоть иногда заглядывать, не говоря уже о руководстве"
b = s
Debug.Print "Чайник, "; b

Ответить

Номер ответа: 6
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #6 Добавлено: 03.02.11 09:40
ты к Byte() присваиваешь String, чайник?

Ответить

Номер ответа: 7
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #7 Добавлено: 03.02.11 14:40
А в чем проблема?

Ответить

Номер ответа: 8
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #8 Добавлено: 03.02.11 17:03
Полагаю, что в несоответствии типов переменных

Ответить

Номер ответа: 9
Автор ответа:
 udn79



Вопросов: 2
Ответов: 95
 Профиль | | #9 Добавлено: 03.02.11 19:45
Прочти тему и проверь код
  1.  
  2. Dim b() As Byte
  3. Const s = "нужно в книжки хоть иногда заглядывать, не говоря уже о руководстве"
  4. b = s
  5. Debug.Print "Чайник, "; b
  6.  


Вот и я говорю в руководство не смотрят, не говаря уже о полном руководстве.
В книгах есть элементы которые не встретишь даже в инете, покрай ней мере на руском языке.

В байтовому массиву и строкам можно применять одни и тебе функции

Dim a() As Byte:a = CStr(a) & "Íó òû ÷àéíèê"

Ответить

Номер ответа: 10
Автор ответа:
 udn79



Вопросов: 2
Ответов: 95
 Профиль | | #10 Добавлено: 03.02.11 19:56
  1.  
  2. Dim a() As Byte:a = CStr(a) & "Ну ты чайник"
  3.  
  4. For Each x In a
  5.     s = s & ChrB(x)
  6. Next
  7. MsgBox s

Ответить

Номер ответа: 11
Автор ответа:
 udn79



Вопросов: 2
Ответов: 95
 Профиль | | #11 Добавлено: 03.02.11 20:03
Твой код можно записать и так
  1.  
  2. Private Sub Form_Load()
  3.     func 10, three:=3
  4. End Sub
  5.  
  6. Private Sub func(ByVal one As Long, Optional ByVal two As Long = 0, Optional ByVal three As Long = 10)
  7.     Debug.Print "one ="; one, "two = "; two, "three = "; three
  8. End Sub

Ответить

Номер ответа: 12
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #12 Добавлено: 03.02.11 22:42
udn79 пишет:
В байтовому массиву и строкам можно применять одни и тебе функции

О Ужас! Это ужасно! БЕсмысленная, беспощадная несуразица!!!

Ответить

Номер ответа: 13
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #13
Добавлено: 03.02.11 23:23
udn79 ага. этот код можно записать тысячей способов)
AgentFire ну а что. Там же неявное преобразование типов повсюду
msdn "Совет 361. Избегайте неявного преобразования типов данных. <...> Подобная возможность является большим недостатком VB, а ее использование разработчиками говорит в первую очередь об их небольшом опыте…"
С другой стороны строки и массивы байтов сильно завязаны. Например InStrB позволяет искать последовательности байтов

Ответить

Номер ответа: 14
Автор ответа:
 udn79



Вопросов: 2
Ответов: 95
 Профиль | | #14 Добавлено: 04.02.11 00:27
AgentFire
Опровергни
что нельзя сделать со строкой, что можно с байтовым массивом либо наоборот?

Ответить

Номер ответа: 15
Автор ответа:
 udn79



Вопросов: 2
Ответов: 95
 Профиль | | #15 Добавлено: 04.02.11 00:49
Избегать - не значит игнорировать эту возможность
Использование участков отладки не отражается на полноценном коде.

Также как и венгерское сокращение записи.
Dim a% ,b# ,c! ,d& ,e$

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

И если алгоритм будет работать в цикле бытсрей с Dim b() As Byte, чем со строкой, то не просто глупо, а даже тупо не использовать неявное преобразование. Можешь явно преобразовать.
Я знаю, что такое некультурный тон в програмирование.

Не явное преобразование дает понять, что вошто можно преобразовать хотябы. Да и без знания этого ты и не заметишь, что у тебя неявно преобразовалось и почему у тебя алгоритм, выдает не те результаты.

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам