若要建立新的擴充物件以提供一個或多個函式、資料類型或其他擴充物件,請在 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 在語言之間傳輸資料時支援的資料類型,以及用作彼此表示的配對
擴充物件在兩種語言中實際上是相同的物件。