若要建立新的擴充物件以提供一或多個函式、資料類型或進一步的擴充物件,請在 JavaScript 中使用內建的 shell.createExtensionObject()
函式,或在 Python 中使用 shell.create_extension_object()
函式。
shell.createExtensionObject()
若要將成員新增至擴充物件,請在 JavaScript 中使用內建的 shell.addExtensionObjectMember()
函式,或在 Python 中使用 shell.add_extension_object_member()
函式。
shell.addExtensionObjectMember(object, name, member[, definition])
其中
object
是要新增新成員的擴充物件。name
是新成員的名稱。名稱必須是有效的指令碼識別碼,因此第一個字元必須是字母或底線字元,後接任意數量的字母、數字或底線字元。在已新增至相同擴充物件的成員中,名稱必須是唯一的,並且如果成員是函式,則名稱不必與定義的函式名稱相符。即使您使用 Python 來定義和新增成員,最好以駝峰式大小寫指定名稱。以駝峰式大小寫指定成員名稱可讓 MySQL Shell 自動強制執行命名慣例。MySQL Shell 會使用駝峰式大小寫在 JavaScript 模式中提供成員,並使用蛇形大小寫在 Python 模式中提供成員。-
member
是新成員的值,可以是下列任一項支援的基本資料類型。支援的資料類型為 「none」 或 「null」、「bool」、「number」 (整數或浮點數)、「string」、「array」 和 「dictionary」。
JavaScript 或 Python 函式。您可以將原生程式碼用於新增為擴充物件成員的函式主體中,前提是介面 (參數和傳回值) 僅限於表格 10.1,「擴充物件支援的資料類型配對」中支援的資料類型。在介面中使用其他資料類型可能會導致未定義的行為。
另一個擴充物件。
-
definition
是一個選用字典,可以包含成員的說明資訊,並且如果成員是函式,則可以包含函式接收的參數清單。說明資訊是使用下列屬性定義的brief
是成員的簡短描述。details
是成員的詳細描述,以字串清單的形式提供。當您使用 MySQL Shell\help
命令時,會提供此描述。
函式的參數是使用下列屬性定義的
-
parameters
是描述函式接收之每個參數的字典清單。每個字典描述一個參數,並且可以包含下列索引鍵name
(字串,必要):參數的名稱。type
(字串,必要):參數的資料類型,可以是 「string」、「integer」、「bool」、「float」、「array」、「dictionary」 或 「object」。如果類型為 「object」,也可以使用class
或classes
索引鍵。如果類型為 「string」,也可以使用values
索引鍵。如果類型為 「dictionary」,也可以使用options
索引鍵。class
(字串,選用,當資料類型為 「object」 時允許):定義允許作為參數的物件類型。classes
(字串清單,選用,當資料類型為 「object」 時允許):定義允許作為參數之物件類型的類別清單。class
和classes
支援的物件類型是 MySQL Shell API 公開的物件類型,例如Session
、ClassicSession
、Table
或Collection
。如果將不在這個清單中的物件類型傳遞給函式,則會引發錯誤。values
(字串清單,選用,當資料類型為 「string」 時允許):對參數有效的數值清單。如果將不在這個清單中的數值傳遞給函式,則會引發錯誤。options
(選項清單,選用,當資料類型為 「dictionary」 時允許):允許參數使用的選項清單。選項使用與參數相同的定義結構,但如果未指定選項的required
,則預設為false
。MySQL Shell 會驗證最終使用者指定的選項,並且如果將不在這個清單中的選項傳遞給函式,則會引發錯誤。如果您建立沒有選項清單的字典,則 MySQL Shell 會直接將最終使用者為字典指定的任何選項傳遞給函式,而不會進行驗證。required
(布林值,選用):是否需要參數。如果未指定參數的required
,則預設為true
。brief
(字串,選用):參數的簡短描述,以說明資訊的形式提供。details
(字串清單,選用):參數的詳細描述,以說明資訊的形式提供。
在將擴充物件註冊為 MySQL Shell 全域物件,或將擴充物件新增為已註冊為 MySQL Shell 全域物件之另一個擴充物件的成員之前,都視為擴充物件正在建構中。如果您嘗試在尚未註冊時在 MySQL Shell 中使用擴充物件,則會傳回錯誤。
擴充物件可以包含以 Python 定義的成員和以 JavaScript 定義的成員的組合。MySQL Shell 會管理參數和傳回值中,從一種語言到另一種語言的資料傳輸。表格 10.1,「擴充物件支援的資料類型配對」顯示 MySQL Shell 在語言之間傳輸資料時支援的資料類型,以及用作彼此表示的配對
擴充物件實際上在兩種語言中都是相同的物件。