فبسكريبت:كيفية الاستفادة من كائن القاموس الذي تم إرجاعه من دالة؟

StackOverflow https://stackoverflow.com/questions/140002

  •  02-07-2019
  •  | 
  •  

سؤال

أحاول إرجاع قاموس من وظيفة.أعتقد أن الوظيفة تعمل بشكل صحيح، لكني لست متأكدًا من كيفية استخدام القاموس الذي تم إرجاعه.

هنا هو الجزء ذو الصلة من وظيفتي:

Function GetSomeStuff()
  '
  ' Get a recordset...
  '

  Dim stuff
  Set stuff = CreateObject("Scripting.Dictionary")
  rs.MoveFirst
  Do Until rs.EOF
    stuff.Add rs.Fields("FieldA").Value, rs.Fields("FieldB").Value
    rs.MoveNext
  Loop

  GetSomeStuff = stuff
End Function

كيف يمكنني استدعاء هذه الوظيفة واستخدام القاموس الذي تم إرجاعه؟

يحرر:لقد حاولت هذا:

Dim someStuff
someStuff = GetSomeStuff

و

Dim someStuff
Set someStuff = GetSomeStuff

عندما أحاول الوصول إلى someStuff، تظهر لي رسالة الخطأ:

Microsoft VBScript runtime error: Object required: 'GetSomeStuff'

تحرير 2:جرب هذا في الوظيفة:

Set GetSomeStuff = stuff

النتائج في هذا الخطأ:

Microsoft VBScript runtime error: Wrong number of arguments or invalid property assignment.
هل كانت مفيدة؟

المحلول

لم أكن متأكدًا تمامًا من مشكلتك، لذلك قمت بالتجربة قليلًا.

يبدو أنك فاتتك للتو تعيين مرجع لكائن ما، عليك استخدامه set, ، حتى بالنسبة لقيمة الإرجاع:

Function GetSomeStuff
  Dim stuff
  Set stuff = CreateObject("Scripting.Dictionary")
    stuff.Add "A", "Anaconda"
    stuff.Add "B", "Boa"
    stuff.Add "C", "Cobra"

  Set GetSomeStuff = stuff
End Function

Set d = GetSomeStuff
Wscript.Echo d.Item("A")
Wscript.Echo d.Exists("B")
items = d.Items
For i = 0 To UBound(items)
  Wscript.Echo items(i)
Next

نصائح أخرى

هل حاولت القيام
set GetSomeStuff = stuff
في السطر الأخير من الدالة؟

هل جربت:

Dim returnedStuff
Set returnedStuff = GetSomeStuff()

ثم "لكل" التكرار عبر القاموس؟يوجد مثال لاستخدام القاموس (على الرغم من أنه بالنسبة لـ VB6، إلا أن جوهره هو نفسه!) هنا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top