8 Soru: VB6'daki Sub ve Function arasındaki fark nedir?

tarafından oluşturulan soru Fri, Apr 13, 2012 12:00 AM

Eski bir VB kodundan geçiyorum ve bunun gibi işlev tanımlarına giriyorum -

 
 Private Function ExistingCustomer(Index As Integer, Customer As String) As Integer

 Private Sub cmdCustomerList_Click()

Fark nedir?

    
48
  1. Yalnızca excel'de 'Subs', makro atama kutusundaki şekillere atanmak için kullanılabilir.
    2015-01-08 12: 15: 37Z
8 Yanıtlar                              8                         

İşlev değeri döndürür, Sub vermez. Bu kadar basit.

    
110
2012-04-13 13: 27: 34Z
  1. + 1. El kitabı diyor ki : " İşlev prosedürü, bir Alt prosedür, bağımsız değişkenleri alabilen, bir dizi deyim gerçekleştirebilen ve bağımsız değişkenlerinin değerini değiştirebilen ayrı bir prosedürdür, ancak, bir değer döndüren bir İşlev prosedüründen farklı olarak, bir Alt prosedür kullanılamaz. ifade." Biraz soluk görünüyor, ancak bunun nedeni size bir Sub ve Function'ın neler yapabileceği hakkında bazı ek bilgiler söyledikleridir.
    2012-04-13 13: 50: 16Z

Bir işlev, bir ifadede de kullanılabilir. Bir alt yordam olamaz. İşlevler, kodunuzun okunabilirliğini bir alt rutinden daha iyi ödünç verebilir.

İşte bir fonksiyonun okunabilirliği nasıl artırabileceğine bir örnek:

 
If AccountIsLocked("JJones") then Msgbox("This account is locked")

bu işlev bir yerde tanımlanacaktı

 
public function AccountIsLocked(UserId as string) as boolean
   dim usr = uow.AccountRepository.UserInfo(UserId)
   return usr.locked
end function

İşte aynı örnek ama bir alt yordamla kodlanmış:

 
CheckIfAccountLocked("JJones")

ve başka bir yerde bu alt tanım:

 
public sub CheckIfAccountLocked(UserId)
       if uow.AccountRepository.UserInfo(UserId).locked then
          msgbox("Account is locked")
       end if
end sub

Ayrıca, değerin kontrol edilmesinin eylemden ayrıldığına dikkat edin - bu, görevlerin ayrılmasına katkıda bulunur. İşlev yeniden kullanılabilirliğe yön verir.

VB6 ile parantezle ilgili bazı tuhaf kurallar vardır. Bir alt için hiçbir parametre yoksa, parantez gerekli değildir (Visual Studio parantezi kaldırabilir). Bunun bir yolu, "Arama" anahtar kelimesini alt kelimenizden önce eklemektir.

 
Call CheckIfAccountLocked()

v

 
CheckIfAccountLocked
    
18
2014-11-18 16: 33: 57Z
  1. Buradaki en iyi cevap
    2016-09-26 01: 14: 57Z

İşlevde değerleri boolean, string ve diğer veri veri türleri olarak döndürebiliriz.

ancak alt hiçbir şey döndürmez. sadece verdiğimiz kod ve talimatı çalıştırır. Bunlar aynı zamanda yöntem olarak da kabul edilir.

Sub, denetimin olaylarında da kullanılır ve bu olaylar da hiçbir değer döndürmez.

örneğin bir komut düğmesinin click olayı: Özel alt cmd_click ()

son alt

    
4
2014-08-23 11: 17: 49Z

Her ikisi de kod yazacak bölümlerdir, ancak bir işlev bir değer döndürmelidir. Örneğin, karmaşık bir matematik işleminin birkaç kez yürütülmesi gereken bir programınız olsaydı, basitçe bir işlev yapardınız ve karmaşık matematik kodunu orada tutarsınız ve hesaplamayı yapmanız gereken herhangi bir zamanda sadece işlevi çağırabilirsiniz. . Umarım bu iyi anladım mı emin değilim.

    
3
2015-04-30 09: 20: 17Z

VB6'da Sub ve İşlev arasındaki fark nedir?

" alt " bir işlem yapabilir. "sub" değer döndürmez.

Örnek:

Form_Load ()

" işlev " de bazı işlemler gerçekleştirebilir, ancak aynı zamanda çağrıldığı noktaya bir değer de getirir.  bu, "İşlevler, genellikle bir değişkene dayalı bir değer döndürür"

Örnek:

Val (), FormatPer% ().

    
2
2016-08-25 09: 43: 46Z

vb içindeki işlev

  • bir işlev bir miktar değer döndürmelidir
  • Sözdizimi: özel işlev fun_name (argüman /s (isteğe bağlı)) return_type (integer, string ..)  geri dönüş değeri  son işlev
  • fun_name (bağımsız değişkenler (isteğe bağlı)) işlev çağrısı için yeterlidir

vb'de alt

  • bir alt değerin /değerlerin geri döndürülmemesi gerekiyor
  • Sözdizimi: özel alt sub_name (bağımsız değişken /s (isteğe bağlı))

    son alt

  • sub_name (bağımsız değişkenler (isteğe bağlı)) işlev çağrısı için yeterlidir
0
2014-07-09 06: 19: 12Z
  1. İşlevlerin sözdizimi Function ... End fonksiyonu ve Sub için ise Sub ... End Sub olacaktır.
  2. İşlevler nesnelere sahip olabilir veya olmayabilir ancak alt nesnelerin olmaması
  3. İşlevler, Sub'un kullanmadığı yerlerde yeniden kullanılabilir
  4. İşlevler değerleri döndürür, ancak alt göndermez
  5. İşlevler nesne deposuna sahip olabilir, ancak alt değil
  6. İşlevlerin uzantısı .qfl, altının .vba olduğu yerdir
- 1
2018-12-10 05: 03: 32Z

Bir fonksiyon veriyi ve kodu tutar. Ancak bir alt yordam yalnızca kod içeriyor, ancak veri içermiyor.

    
- 2
2017-02-17 20: 38: 15Z
kaynak yerleştirildi İşte