فبسكريبت:كيفية الاستفادة من كائن القاموس الذي تم إرجاعه من دالة؟
-
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، إلا أن جوهره هو نفسه!) هنا.
لا تنتمي إلى StackOverflow