ບໍລິການ ScriptForge.Dictionary

ດິກຊັນນາຣີ (dictionary) ແມ່ນການຮວບຮວມຂອງຄູ່ ຄີ-ລາຍການ (key-item pairs)

ຄີ ແລະ ລາຍການ ສາມາດດຶງມາໃຊ້, ນັບຈຳນວນ, ອັບເດດ ແລະ ອື່ນໆອີກຫຼາຍຢ່າງ.

ໄອຄອນ ເຄັດລັບ

The Dictionary service is similar to the built-in LibreOffice Basic Collection object, however with more features. For example, Collection objects do not support the retrieval of keys. Moreover, Dictionaries provide additional capabilities as replacing keys, testing if a specific key already exists and converting the Dictionary into an Array object or JSON string.


ການເອີ້ນໃຊ້ບໍລິການ

ໃນ Basic

ຕົວຢ່າງຕໍ່ໄປນີ້ຈະສ້າງ myDict ເປັນດິກຊັນນາຣີຫວ່າງເປົ່າ.


    GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
    Dim myDict As Variant
    myDict = CreateScriptService("Dictionary")
  

ແນະນຳໃຫ້ຄືນຊັບພະຍາກອນ (free resources) ຫຼັງຈາກໃຊ້ງານແລ້ວ:


     Set myDict = myDict.Dispose()
  
ໃນ Python

ຕົວຢ່າງລຸ່ມນີ້ຈະສ້າງອິນສະແຕນຊ໌ຫວ່າງເປົ່າຂອງບໍລິການ Dictionary ແລະ ໃຊ້ວິທີການ update ຂອງ Python ເອງເພື່ອຕື່ມຂໍ້ມູນໃສ່ດ້ວຍເນື້ອໃນຈາກວັດຖຸ dict ຂອງ Python.


    dico = dict('A' = 1, 'B' = 2, 'C' = 3)
    # Initialize myDict as an empty dict object
    myDict = CreateScriptService('Dictionary')
    # ໂຫຼດຄ່າຈາກ dico ເຂົ້າໃນ myDict
    myDict.update(dico)
    myDict['D'] = 4
    print(myDict)   # {'A': 1, 'B': 2, 'C': 3, 'D': 4}
    propval = myDict.ConvertToPropertyValues()
  

ທ່ານສາມາດສ້າງອິນສະແຕນຊ໌ຂອງບໍລິການ Dictionary ໂດຍໃຊ້ວັດຖຸ dict ຂອງ Python ເປັນອາຄິວເມັນ ດັ່ງທີ່ສະແດງໃນຕົວຢ່າງຕໍ່ໄປນີ້.


    dico = dict('A' = 1, 'B' = 2, 'C' = 3)
    # ເລີ່ມຕົ້ນ myDict ດ້ວຍເນື້ອໃນຂອງ dico
    myDict = CreateScriptService('Dictionary', dico)
    myDict['D'] = 4
    print(myDict) # {'A': 1, 'B': 2, 'C': 3, 'D': 4}
    propval = myDict.ConvertToPropertyValues()
  
note

Because Python has built-in dictionary support, most of the methods in the Dictionary service are available for Basic scripts only. Exceptions are ConvertToPropertyValues and ImportFromPropertyValues that are supported in both Basic and Python.


ຄຸນສົມບັດ

ຊື່

ອ່ານຢ່າງດຽວ

ປະເພດ

ຄຳອະທິບາຍ

Count

ແມ່ນ

Long

ຈຳນວນລາຍການໃນດິກຊັນນາຣີ

Items

ແມ່ນ

ອາເຣຂອງ Variant

ລາຍການທັງໝົດໃນຮູບແບບອາເຣໜຶ່ງມິຕິ

Keys

ແມ່ນ

ອາເຣຂອງຂໍ້ຄວາມ

ຄີທັງໝົດໃນຮູບແບບອາເຣໜຶ່ງມິຕິ


ໄອຄອນ ເຄັດລັບ

ຄຸນສົມບັດ Keys ແລະ Items ຈະສົ່ງຄືນເນື້ອໃນຂອງພວກມັນຕາມລຳດັບທີ່ກົງກັນ. ລຳດັບນີ້ບໍ່ກ່ຽວກັບລຳດັບການສ້າງ.


ຕົວຢ່າງ:

ຕົວຢ່າງຕໍ່ໄປນີ້ໃຊ້ຄຸນສົມບັດ Keys ເພື່ອວົນຊ້ຳ (iterate) ຜ່ານຄີທັງໝົດໃນດິກຊັນນາຣີ myDict.


    Dim a As Variant, b As String
    a = myDict.Keys
    For Each b In a
        MsgBox(myDict.Item(b))
    Next b
    

ລາຍການວິທີການໃນບໍລິການ Dictionary

Add
ConvertToArray
ConvertToJson
ConvertToPropertyValues

Exists
ImportFromJson
ImportFromPropertyValues
Item

Remove
RemoveAll
ReplaceItem
ReplaceKey


Add

ເພີ່ມຄູ່ ຄີ-ລາຍການ ໃໝ່ເຂົ້າໃນດິກຊັນນາຣີ. ສົ່ງຄືນ True ຖ້າສຳເລັດ.

ໄວຍາກອນ:

dict.Add(key: str, item: any): bool

ພາຣາມິເຕີ:

key: String value used to identify the Item. The key is not case-sensitive.

item: ຄ່າໃດໜຶ່ງ, ລວມເຖິງອາເຣ, ວັດຖຸ Basic, ວັດຖຸ UNO, ດິກຊັນນາຣີ ແລະ ອື່ນໆ.

ຕົວຢ່າງ:


      Dim NewValue As Variant
      myDict.Add("NewKey", NewValue)
    
warning

ທຸກໆຄີຕ້ອງບໍ່ຊ້ຳກັນໃນດິກຊັນນາຣີດຽວກັນ. ຖ້າຄີມີຢູ່ແລ້ວໃນດິກຊັນນາຣີ, ຈະເກີດຂໍ້ຜິດພາດ DUPLICATEKEYERROR. ຄີທີ່ປະກອບດ້ວຍຕົວອັກສອນຊ່ອງວ່າງຈະເກີດຂໍ້ຜິດພາດ INVALIDKEYERROR.


ConvertToArray

ເກັບເນື້ອໃນຂອງດິກຊັນນາຣີໄວ້ໃນອາເຣສອງຖັນ (ເລີ່ມຕົ້ນດັດຊະນີທີ່ສູນ). ຄີຈະຖືກເກັບໄວ້ໃນຖັນທຳອິດ ແລະ ລາຍການຈະຖືກເກັບໄວ້ໃນຖັນທີສອງ.

ຖ້າດິກຊັນນາຣີຫວ່າງເປົ່າ, ວິທີການນີ້ຈະສົ່ງຄືນ Array ຫວ່າງເປົ່າ.

ໄວຍາກອນ:

dict.ConvertToArray(): any[0..*, 0..1]

ຕົວຢ່າງ:


      Dim myDict as Variant
      myDict = CreateScriptService("Dictionary")
      myDict.Add("a", 1)
      myDict.Add("b", 2)
      myDict.Add("c", 3)
      Dim arr as Variant
      arr = myDict.ConvertToArray()
      '(("a", 1), ("b", 2), ("c", 3))
    

ConvertToJson

ແປງເນື້ອໃນຂອງດິກຊັນນາຣີໃຫ້ເປັນຂໍ້ຄວາມ JSON (JavaScript Object Notation).

ຂໍ້ຈຳກັດ

ວິທີການນີ້ຮອງຮັບປະເພດຂໍ້ມູນຕໍ່ໄປນີ້: String, Boolean, ຕົວເລກ, Null ແລະ Empty. ອາເຣທີ່ບັນຈຸລາຍການປະເພດເຫຼົ່ານີ້ກໍໄດ້ຮັບອະນຸຍາດ, ບໍ່ວ່າຈະມີຈັກມິຕິກໍຕາມ. ວັນທີຈະຖືກແປງເປັນຂໍ້ຄວາມ, ແຕ່ພວກມັນບໍ່ສາມາດໃຊ້ພາຍໃນອາເຣໄດ້. ປະເພດຂໍ້ມູນອື່ນໆຈະຖືກແປງເປັນຂໍ້ຄວາມແທນໂດຍໃຊ້ບໍລິການ SF_String.Represent.

ໄວຍາກອນ:

dict.ConvertToJson(indent: str = ""): str

ພາຣາມິເຕີ:

indent: ເມື່ອ indent ເປັນຕົວເລກບວກ ຫຼື ຂໍ້ຄວາມ, ອົງປະກອບອາເຣ JSON ແລະ ສະມາຊິກວັດຖຸຈະຖືກສະແດງໃຫ້ສວຍງາມ (pretty-printed) ຕາມລະດັບການຍໍ້ໜ້ານັ້ນ. ຄ່າ indent ທີ່ເປັນລົບຈະເພີ່ມແຖວໃໝ່ໂດຍບໍ່ມີການຍໍ້ໜ້າ. ຄ່າເລີ່ມຕົ້ນແມ່ນຂໍ້ຄວາມຫວ່າງເປົ່າ "" ເຊິ່ງຈະເລືອກການສະແດງຜົນທີ່ກະທັດຮັດທີ່ສຸດ. ການໃຊ້ເລກຖ້ວນບວກສຳລັບ indent ຈະຍໍ້ໜ້າຕາມຈຳນວນຊ່ອງວ່າງຕໍ່ລະດັບ. ເມື່ອ indent ເປັນຂໍ້ຄວາມ ເຊັ່ນ Chr(9) ຫຼື Tab(1), ຕົວອັກສອນ Tab ຈະຖືກໃຊ້ເພື່ອຍໍ້ໜ້າໃນແຕ່ລະລະດັບ.

ຕົວຢ່າງ:


      myDict.Add("p0", 12.5)
      myDict.Add("p1", "a string àé""ê")
      myDict.Add("p2", DateSerial(2020,9,28))
      myDict.Add("p3", True)
      myDict.Add("p4", Array(1,2,3))
      MsgBox myDict.ConvertToJson()    
      '{"p0": 12.5, "p1": "a string \u00e0\u00e9\"\u00ea", "p2": "2020-09-28", "p3": true, "p4": [1, 2, 3]}
    

ConvertToPropertyValues

ເກັບເນື້ອໃນຂອງດິກຊັນນາຣີໄວ້ໃນອາເຣຂອງ PropertyValues.

ແຕ່ລະລາຍການໃນອາເຣແມ່ນ com.sun.star.beans.PropertyValue. ຄີຈະຖືກເກັບໄວ້ໃນ Name, ລາຍການຈະຖືກເກັບໄວ້ໃນ Value.

ຖ້າມີລາຍການໃດໜຶ່ງທີ່ມີປະເພດ Date, ມັນຈະຖືກແປງເປັນໂຄງສ້າງ com.sun.star.util.DateTime. ຖ້າມີລາຍການໃດໜຶ່ງເປັນອາເຣຫວ່າງເປົ່າ, ມັນຈະຖືກແປງເປັນ Null. ອາເຣທີ່ໄດ້ຈະຫວ່າງເປົ່າເມື່ອດິກຊັນນາຣີຫວ່າງເປົ່າ.

ໄວຍາກອນ:

dict.ConvertToPropertyValues(): obj[0..*]

ຕົວຢ່າງ:

ໃນ Basic

    Dim myDict as Variant
    myDict = CreateScriptService("Dictionary")
    'ເພີ່ມຄຸນສົມບັດບາງຢ່າງໃຫ້ກັບດິກຊັນນາຣີ
    myDict.Add("Color", "Blue")
    myDict.Add("Width", 20)
    'ແປງເປັນອາເຣຂອງວັດຖຸ PropertyValue
    Dim prop as Variant
    prop = myDict.ConvertToPropertyValues()
  
ໃນ Python

ໝາຍເຫດໃນຕົວຢ່າງລຸ່ມນີ້ວ່າ dictionary ຂອງ Python ຈຳເປັນຕ້ອງຖືກສົ່ງເປັນອາຄິວເມັນທີສອງຂອງວິທີການ CreateScriptService.


    myDict = dict()
    myDict["Color"] = "Blue"
    myDict["Width"] = 30
    sfDic = CreateScriptService("Dictionary", myDict)
    prop = sfDic.ConvertToPropertyValues()
  
tip

ບໍລິການ ແລະ ວິທີການຈຳນວນຫຼາຍໃນຫ້ອງສະໝຸດ UNO ຮັບພາຣາມິເຕີທີ່ສະແດງໂດຍໃຊ້ໂຄງສ້າງ PropertyValue, ເຊິ່ງເປັນສ່ວນໜຶ່ງຂອງ API ຂອງ LibreOffice.


Exists

ກວດສອບວ່າຄີໃດໜຶ່ງມີຢູ່ໃນດິກຊັນນາຣີຫຼືບໍ່.

ໄວຍາກອນ:

dict.Exists(key: str): bool

ພາຣາມິເຕີ:

key: ຄີທີ່ຈະຄົ້ນຫາໃນດິກຊັນນາຣີ.

ຕົວຢ່າງ:


    Dim myDict as Variant
    myDict = CreateScriptService("Dictionary")
    'ເພີ່ມຄຸນສົມບັດບາງຢ່າງໃຫ້ກັບດິກຊັນນາຣີ
    myDict.Add("Color", "Blue")
    myDict.Add("Width", 20)
    '(...)
    If Not myDict.Exists("Size") Then
       MsgBox "You have to provide a Size value"
    End If
  

ImportFromJson

ເພີ່ມເນື້ອໃນຈາກຂໍ້ຄວາມ JSON (JavaScript Object Notation) ເຂົ້າໃນດິກຊັນນາຣີປັດຈຸບັນ. ສົ່ງຄືນ True ຖ້າສຳເລັດ.

ຂໍ້ຈຳກັດ

ຂໍ້ຄວາມ JSON ອາດຈະບັນຈຸຕົວເລກ, ຂໍ້ຄວາມ, ບູລີນ, ຄ່າ null ແລະ ອາເຣທີ່ບັນຈຸປະເພດເຫຼົ່ານັ້ນ. ແຕ່ຕ້ອງບໍ່ບັນຈຸວັດຖຸ JSON ຫຼື ດິກຊັນນາຣີຍ່ອຍ.

ຈະມີການພະຍາຍາມແປງຂໍ້ຄວາມເປັນວັນທີ ຫາກລາຍການນັ້ນກົງກັບຮູບແບບໃດໜຶ່ງເຫຼົ່ານີ້: YYYY-MM-DD, HH:MM:SS ຫຼື YYYY-MM-DD HH:MM:SS.

ໄວຍາກອນ:

dict.ImportFromJson(inputstr: str, overwrite: bool = False): bool

ພາຣາມິເຕີ:

inputstr: ຂໍ້ຄວາມທີ່ຈະນຳເຂົ້າ.

overwrite: ເມື່ອເປັນ True, ລາຍການທີ່ມີຊື່ດຽວກັນອາດມີຢູ່ໃນດິກຊັນນາຣີ ແລະ ຄ່າຂອງພວກມັນຈະຖືກຂຽນທັບ. ເມື່ອເປັນ False (ຄ່າເລີ່ມຕົ້ນ), ຄີທີ່ຊ້ຳກັນຈະເຮັດໃຫ້ເກີດຂໍ້ຜິດພາດ. ໃຫ້ລະວັງວ່າຄີຂອງດິກຊັນນາຣີບໍ່ແຍກຕົວອັກສອນນ້ອຍ-ໃຫຍ່, ໃນຂະນະທີ່ຊື່ໃນຂໍ້ຄວາມ JSON ແມ່ນແຍກຕົວອັກສອນນ້ອຍ-ໃຫຍ່.

ຕົວຢ່າງ:


    Dim s As String
    s = "{'firstName': 'John','lastName': 'Smith','isAlive': true,'age': 66, 'birth':  '1954-09-28 20:15:00'" _
        & ",'address': {'streetAddress': '21 2nd Street','city': 'New York','state': 'NY','postalCode': '10021-3100'}" _
        & ",'phoneNumbers': [{'type': 'home','number': '212 555-1234'},{'type': 'office','number': '646 555-4567'}]" _
        & ",'children': ['Q','M','G','T'],'spouse': null}"
    s = Replace(s, "'", """")
    myDict.ImportFromJson(s, OverWrite := True)
    '(ດິກຊັນນາຣີຍ່ອຍ) "address" ແລະ "phoneNumbers" (0) ແລະ (1) ຈະຖືກນຳເຂົ້າເປັນຄ່າຫວ່າງ (Empty).
  

ImportFromPropertyValues

ແຊກເນື້ອໃນຈາກອາເຣຂອງວັດຖຸ PropertyValue ເຂົ້າໃນດິກຊັນນາຣີປັດຈຸບັນ. ຊື່ (Names) ຂອງ PropertyValue ຈະຖືກໃຊ້ເປັນຄີ (Keys) ໃນດິກຊັນນາຣີ, ສ່ວນຄ່າ (Values) ຈະບັນຈຸຄ່າທີ່ກົງກັນ. ສົ່ງຄືນ True ຖ້າສຳເລັດ.

ໄວຍາກອນ:

dict.ImportFromPropertyValues(propertyvalues: obj[0..*], overwrite: bool = False): bool

ພາຣາມິເຕີ:

propertyvalues: ອາເຣໜຶ່ງມິຕິ (ເລີ່ມຕົ້ນທີ່ສູນ) ທີ່ບັນຈຸວັດຖຸ com.sun.star.beans.PropertyValue. ພາຣາມິເຕີນີ້ອາດເປັນວັດຖຸ PropertyValue ດ່ຽວໆທີ່ບໍ່ໄດ້ຢູ່ໃນອາເຣກໍໄດ້.

overwrite: ເມື່ອເປັນ True, ລາຍການທີ່ມີຊື່ດຽວກັນອາດມີຢູ່ໃນດິກຊັນນາຣີ ແລະ ຄ່າຂອງພວກມັນຈະຖືກຂຽນທັບ. ເມື່ອເປັນ False (ຄ່າເລີ່ມຕົ້ນ), ຄີທີ່ຊ້ຳກັນຈະເຮັດໃຫ້ເກີດຂໍ້ຜິດພາດ. ໝາຍເຫດວ່າຄີຂອງດິກຊັນນາຣີບໍ່ແຍກຕົວອັກສອນນ້ອຍ-ໃຫຍ່ໃນ Basic, ໃນຂະນະທີ່ຊື່ໃນຊຸດຂອງ Property values ແລະ ໃນ dictionary ຂອງ Python ແມ່ນແຍກຕົວອັກສອນນ້ອຍ-ໃຫຍ່.

ຕົວຢ່າງ:

ຕົວຢ່າງລຸ່ມນີ້ຈະສ້າງອາເຣທີ່ມີວັດຖຸ PropertyValue ສອງອັນກ່ອນ, ແລ້ວຈຶ່ງແປງມັນໃຫ້ເປັນດິກຊັນນາຣີ.

ໃນ Basic

    Dim vProp As New com.sun.star.beans.PropertyValue
    Dim arrProp : arrProp = Array()
    vProp.Name = "Color"
    vProp.Value = "Blue"
    arrProp = SF_Array.Append(arrProp, vProp)
    vProp.Name = "Date"
    vProp.Value = CDateToUnoDateTime(Now)
    arrProp = SF_Array.Append(arrProp, vProp)
    myDict = CreateScriptService("Dictionary")
    myDict.ImportFromPropertyValues(arrProp, Overwrite := True)
    Dim keys : keys = myDict.Keys
    For Each k In keys
        MsgBox k & " - " & myDict.Item(k)
    Next k
  
ໃນ Python

    from scriptforge import CreateScriptService
    from datetime import datetime
    import uno
    bas = CreateScriptService("Basic")
    arrProp = list()
    vProp = uno.createUnoStruct("com.sun.star.beans.PropertyValue")
    vProp.Name = "Color"
    vProp.Value = "Blue"
    arrProp.append(vProp)
    vProp = uno.createUnoStruct("com.sun.star.beans.PropertyValue")
    vProp.Name = "Date"
    vProp.Value = bas.CDateToUnoDateTime(datetime.now())
    arrProp.append(vProp)
    myDict = CreateScriptService("Dictionary")
    myDict.ImportFromPropertyValues(arrProp, overwrite=True)
    for k in myDict.keys():
        bas.MsgBox("{} - {}".format(k, myDict[k]))
  

Item

ດຶງຂໍ້ມູນລາຍການທີ່ມີຢູ່ໃນດິກຊັນນາຣີຕາມຄີຂອງມັນ. ສົ່ງຄືນຄ່າຂອງລາຍການຖ້າສຳເລັດ, ບໍ່ດັ່ງນັ້ນຈະສົ່ງຄືນ Empty.

ໄວຍາກອນ:

dict.Item(key: str): any

ພາຣາມິເຕີ:

key: Not case-sensitive. If it does not exist, Empty value is returned.

ຕົວຢ່າງ:

ຕົວຢ່າງຕໍ່ໄປນີ້ຈະວົນຊ້ຳຜ່ານຄີທັງໝົດໃນດິກຊັນນາຣີ ແລະ ໃຊ້ວິທີການ Item ເພື່ອເຂົ້າເຖິງຄ່າຂອງພວກມັນ.


    Dim myDict as Variant, k as Variant, allKeys as Variant
    myDict = CreateScriptService("Dictionary")
    myDict.Add("key1", 100)
    myDict.Add("key2", 200)
    myDict.Add("key3", 300)
    allKeys = myDict.Keys
    For Each k in allKeys
       MsgBox(myDict.Item(k))
    Next k
  

Remove

ລຶບລາຍການທີ່ມີຢູ່ໃນດິກຊັນນາຣີຕາມຄີຂອງມັນ. ສົ່ງຄືນ True ຖ້າສຳເລັດ.

ໄວຍາກອນ:

dict.Remove(key: str): bool

ພາຣາມິເຕີ:

key: Not case-sensitive. Must exist in the dictionary, otherwise an UNKNOWNKEYERROR error is raised.

ຕົວຢ່າງ:


    myDict.Add("key1", 100)
    myDict.Add("key2", 200)
    myDict.Add("key3", 300)
    MsgBox(myDict.Count) ' 3
    myDict.Remove("key2")
    MsgBox(myDict.Count) ' 2
  

RemoveAll

ລຶບລາຍການທັງໝົດອອກຈາກດິກຊັນນາຣີ. ສົ່ງຄືນ True ຖ້າສຳເລັດ.

ໄວຍາກອນ:

dict.RemoveAll(): bool

ຕົວຢ່າງ:


    myDict.Add("key1", 100)
    myDict.Add("key2", 200)
    myDict.Add("key3", 300)
    MsgBox(myDict.Count) ' 3
    myDict.RemoveAll()
    MsgBox(myDict.Count) ' 0
  

ReplaceItem

ປ່ຽນແທນຄ່າຂອງລາຍການທີ່ມີຢູ່ຕາມຄີຂອງມັນ. ສົ່ງຄືນ True ຖ້າສຳເລັດ.

ໄວຍາກອນ:

dict.ReplaceItem(key: str, value: any): bool

ພາຣາມິເຕີ:

key: String value representing the key whose value will be replaced. Not case-sensitive. If the key does not exist in the dictionary, an UNKNOWNKEYERROR error is raised.

value: ຄ່າໃໝ່ຂອງລາຍການທີ່ອ້າງອີງດ້ວຍພາຣາມິເຕີ key.

ຕົວຢ່າງ:


    myDict.Add("a", 1)
    MsgBox(myDict.Item("a")) ' 1
    myDict.ReplaceItem("a", 100)
    MsgBox(myDict.Item("a")) ' 100
  

ReplaceKey

ປ່ຽນແທນຄີທີ່ມີຢູ່ແລ້ວໃນດິກຊັນນາຣີດ້ວຍຄີໃໝ່. ຄ່າຂອງລາຍການຈະບໍ່ຖືກປ່ຽນແປງ. ສົ່ງຄືນ True ຖ້າສຳເລັດ.

ໄວຍາກອນ:

dict.ReplaceKey(key: str, value: str): bool

ພາຣາມິເຕີ:

key: String value representing the key to be replaced. Not case-sensitive. If the key does not exist in the dictionary, a UNKNOWNKEYERROR error is raised.

value: String value for the new key. Not case-sensitive. If the new key already exists in the dictionary, an DUPLICATEKEYERROR error is raised.

ຕົວຢ່າງ:


    myDict.Add("oldKey", 100)
    MsgBox(myDict.Item("oldKey")) ' 100
    myDict.ReplaceKey("oldKey", "newKey")
    MsgBox(myDict.Item("newKey")) ' 100
  
warning

ຣູທີນ ຫຼື ຕົວລະບຸ Basic ຂອງ ScriptForge ທັງໝົດທີ່ຂຶ້ນຕົ້ນດ້ວຍເຄື່ອງໝາຍຂີດກ້ອງ "_" ແມ່ນສະຫງວນໄວ້ສຳລັບໃຊ້ພາຍໃນ. ພວກມັນບໍ່ໄດ້ມີໄວ້ໃຫ້ໃຊ້ໃນມາໂຄຣ Basic ຫຼື ສະຄຣິບ Python.