国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

第二十一章 Classes

這篇具有很好參考價值的文章主要介紹了第二十一章 Classes。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

第二十一章 Classes

Classes

類定義并不是 ObjectScript 的正式組成部分。相反,可以在類定義的特定部分中使用 ObjectScript(特別是在方法定義中,可以在其中使用其他實現(xiàn)語言)。

類名和包

每個 IRIS 類都有一個名稱,該名稱在定義它的命名空間中必須是唯一的。完整的類名是由一個或多個句點分隔的字符串,如以下示例所示:package.subpackage.subpackage.class。短類名是該字符串中最后一個句點之后的部分;最后一個句點之前的部分是包名稱。

包名稱只是一個字符串,但如果它包含句點,IRIS 開發(fā)工具會將每個句點分隔的部分視為子包。為了方便起見,集成開發(fā)環(huán)境 (IDE) 和其他工具將這些子包顯示為文件夾層次結(jié)構(gòu)。

類定義的基本內(nèi)容

IRIS 類定義可以包括以下項目,全部稱為類成員:

  • Methods方法——有兩種方法:實例方法和類方法(在其他語言中稱為靜態(tài)方法)。在大多數(shù)情況下,方法是子例程subroutine。
  • Parameters 參數(shù) — 參數(shù)定義供此類使用的常量值。該值是在編譯時設(shè)置的。
  • Properties 屬性——屬性包含類實例的數(shù)據(jù)。
  • Class queries 類查詢 — 類查詢定義可由該類使用的 SQL 查詢,并指定用作查詢?nèi)萜鞯念悺?/li>
  • XData blocksXData 塊是類中格式良好的 XML 文檔,供類使用。
  • 僅與持久類相關(guān)的其他類型的類成員。

IRIS 類定義使用類定義語言 (CDL) 來指定類及其成員??梢允褂?PythonObjectScript 在方法內(nèi)部編寫可執(zhí)行代碼。

類定義可以包含關(guān)鍵字;這些會影響類編譯器的行為。可以為整個類指定一些關(guān)鍵字,為特定類成員指定其他關(guān)鍵字。這些關(guān)鍵字影響類編譯器生成的代碼,從而控制類的行為。

下面顯示了一個簡單的 IRIS 類定義,其中包含用 ObjectScriptPython 編寫的方法:

Class MyApp.Main.SampleClass Extends %RegisteredObject
{

Parameter CONSTANTMESSAGE [Internal] = "Hello world!" ;

Property VariableMessage As %String [ InitialExpression = "How are you?"];

Property MessageCount As %Numeric [Required];

ClassMethod HelloWorld() As %String [ Language = objectscript ]
 {
    Set x=..#CONSTANTMESSAGE
    Return x
 }

Method WriteIt() [ Language = objectscript, ServerOnly = 1]
{
    Set count=..MessageCount
    For i=1:1:count {
        Write !,..#CONSTANTMESSAGE," ",..VariableMessage
        }
    }

}
Class MyApp.Main.SampleClass Extends %RegisteredObject
{

Parameter CONSTANTMESSAGE [Internal] = "Hello world!" ;

Property VariableMessage As %String [ InitialExpression = "How are you?"];

Property MessageCount As %Numeric [Required];

ClassMethod MessageWrapper() As %String [ Language = objectscript ]
{
     return ..#CONSTANTMESSAGE
}

ClassMethod HelloWorld() As %String [ Language = python ]
 {
    import iris
    x = iris.cls("MyApp.Main.SampleClass").MessageWrapper()
    return x
 }

Method WriteIt() [ ServerOnly = 1, Language = python ]
{
    import iris
    CONSTANTMESSAGE = self.MessageWrapper()
    count = self.MessageCount
    print()
    for i in range(count):
        print(CONSTANTMESSAGE, self.VariableMessage)
}

}

請注意以下幾點:

  • 第一行給出了類的名稱。 MyApp.Main.SampleClass 是完整類名,MyApp.Main 是包名,SampleClass 是短類名。

IDE 和其他用戶界面將每個包視為一個文件夾。

  • Extends 是編譯器關(guān)鍵字。

Extends 關(guān)鍵字指定該類是中 %RegisteredObject 的子類,該類是為對象支持提供的系統(tǒng)類。此示例類僅擴(kuò)展一個類,但可以擴(kuò)展多個其他類。這些類又可以擴(kuò)展其他類。

  • CONSTANTMESSAGE 是一個參數(shù)。按照慣例,IRIS 系統(tǒng)類中的所有參數(shù)的名稱全部大寫。這是一個方便的約定,但不需要遵循它。

Internal 關(guān)鍵字是編譯器關(guān)鍵字。它將這個參數(shù)標(biāo)記為內(nèi)部參數(shù),從而禁止它在類文檔中顯示。該參數(shù)有一個字符串值。

必須通過 ObjectScript 訪問類參數(shù)。在此類的 Python 版本中,我們使用 ObjectScript 類方法 MessageWrapper() 返回參數(shù)的值。

  • 可以從 Python 訪問任何類方法??梢栽谒猩舷挛闹惺褂?iris.cls("Package.Class").classMethodName() 語法,并在 Python 實例方法中使用 self.classMethodName() 語法。該示例顯示了兩種語法形式。
  • VariableMessageMessageCount 是屬性。 As 后面的項目指示這些屬性的類型。 InitialExpressionRequired 是編譯器關(guān)鍵字。

可以直接從 ObjectScriptPython 訪問 IRIS 類屬性,如示例中所示。

  • HelloWorld() 是一個類方法,它返回一個字符串;這由 As 后面的項目表示。

此方法使用類參數(shù)的值。

  • WriteIt() 是一個實例方法,它不返回值。

此方法使用類參數(shù)的值和兩個屬性的值。

ServerOnly 編譯器關(guān)鍵字意味著該方法不會投射到外部客戶端。

以下終端會話顯示了我們?nèi)绾问褂么祟?。兩個終端 shell 對于該類的 ObjectScriptPython 版本均有效。文章來源地址http://www.zghlxwxcb.cn/news/detail-702914.html

TESTNAMESPACE>write ##class(MyApp.Main.SampleClass).HelloWorld()
Hello world!
TESTNAMESPACE>set x=##class(MyApp.Main.SampleClass).%New()
 
TESTNAMESPACE>set x.MessageCount=3
 
TESTNAMESPACE>do x.WriteIt()
 
Hello world! How are you?
Hello world! How are you?
Hello world! How are you?
>>> print(iris.cls("MyApp.Main.SampleClass").HelloWorld())
Hello world!
>>> x=iris.cls("MyApp.Main.SampleClass")._New()
>>> x.MessageCount=3
>>> x.WriteIt()

Hello world! How are you?
Hello world! How are you?
Hello world! How are you?

到了這里,關(guān)于第二十一章 Classes的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 第二十一章 : Spring Boot 集成RabbitMQ(五)

    第二十一章 : Spring Boot 集成RabbitMQ(五) 前言 本章知識點: 如何保證消息100%可靠性發(fā)送的技術(shù)解決方案。 一、 應(yīng)用場景 在使用消息隊列時,因為生產(chǎn)者和消費者不直接交互,所以面臨下面幾個問題: 1)要把消息添加到隊列中,怎么保證消息成功添加? 2)如何保證消息

    2024年02月03日
    瀏覽(20)
  • UCB Data100:數(shù)據(jù)科學(xué)的原理和技巧:第二十一章到第二十六章

    UCB Data100:數(shù)據(jù)科學(xué)的原理和技巧:第二十一章到第二十六章

    原文:SQL II 譯者:飛龍 協(xié)議:CC BY-NC-SA 4.0 學(xué)習(xí)成果 介紹過濾組的能力 在 SQL 中執(zhí)行數(shù)據(jù)清理和文本操作 跨表連接數(shù)據(jù) 在本講座中,我們將繼續(xù)上次的工作,介紹一些高級的 SQL 語法。 首先,讓我們加載上一堂課的數(shù)據(jù)庫。 HAVING 通過在每個組的所有行上應(yīng)用一些條件來過

    2024年01月21日
    瀏覽(99)
  • 第二十一章行為性模式—訪問者模式

    第二十一章行為性模式—訪問者模式

    行為型模式用于描述程序在運行時復(fù)雜的流程控制,即描述多個類或?qū)ο笾g怎樣相互協(xié)作共同完成單個對象無法單獨完成的任務(wù),它涉及算法與對象間職責(zé)的分配。行為型模式分為類行為模式和對象行為模式: 類行為模式:采用繼承機(jī)制來在類間分派行為 對象行為模式:

    2024年02月07日
    瀏覽(35)
  • 第二十一章 Prim算法與Kruskal算法(通俗證明與詳細(xì)講解)

    第二十一章 Prim算法與Kruskal算法(通俗證明與詳細(xì)講解)

    我們先解釋一下什么是最小生成樹。 這個概念是基于圖的,如果說存在一條路線串通起來了所有的點,那么這條路線就叫做生成樹。而在這些路線中最短的那一條就叫做最小生成樹。 如上圖所示,圖中的紅色路線就是一個生成樹,假設(shè)這條紅色路線是眾多生成樹路線中最小

    2024年02月11日
    瀏覽(30)
  • Chrome 開發(fā)者工具 第二十一章(替換 Web 內(nèi)容和 HTTP 響應(yīng))

    Chrome 開發(fā)者工具 第二十一章(替換 Web 內(nèi)容和 HTTP 響應(yīng))

    Chrome 開發(fā)者工具的本地替換功能是一個強(qiáng)大的工具,它允許開發(fā)者在不修改服務(wù)器代碼的情況下模擬前端更改。這個功能特別適用于那些需要快速測試前端更改,但又不想或不能等待后端更新的情況。 本地替換的工作原理 本地替換通過在開發(fā)者工具中進(jìn)行更改,并將這些更

    2024年02月22日
    瀏覽(21)
  • 第二十一章:CCNet:Criss-Cross Attention for Semantic Segmentation ——用于語義分割的交叉注意力

    第二十一章:CCNet:Criss-Cross Attention for Semantic Segmentation ——用于語義分割的交叉注意力

    原文題目:《CCNet:Criss-Cross Attention for Semantic Segmentation?》 原文引用:Huang Z, Wang X, Huang L, et al. Ccnet: Criss-cross attention for semantic segmentation[C]//Proceedings of the IEEE/CVF international conference on computer vision. 2019: 603-612. 原文鏈接: https://openaccess.thecvf.com/content_ICCV_2019/papers/Huang_CCNet_Criss

    2024年02月16日
    瀏覽(27)
  • 【正點原子STM32連載】第二十一章 高級定時器輸出指定個數(shù)PWM實驗 摘自【正點原子】APM32E103最小系統(tǒng)板使用指南

    1)實驗平臺:正點原子APM32E103最小系統(tǒng)板 2)平臺購買地址:https://detail.tmall.com/item.htm?id=609294757420 3)全套實驗源碼+手冊+視頻下載地址: http://www.openedv.com/docs/boards/xiaoxitongban 本章將介紹使用APM32E103高級定時器輸出指定個數(shù)的PWM。通過本章的學(xué)習(xí),讀者將學(xué)習(xí)到高級定時器重

    2024年02月21日
    瀏覽(24)
  • 【正點原子FPGA連載】第二十一章AXI DMA環(huán)路測試 摘自【正點原子】DFZU2EG_4EV MPSoC之嵌入式Vitis開發(fā)指南

    【正點原子FPGA連載】第二十一章AXI DMA環(huán)路測試 摘自【正點原子】DFZU2EG_4EV MPSoC之嵌入式Vitis開發(fā)指南

    1)實驗平臺:正點原子MPSoC開發(fā)板 2)平臺購買地址:https://detail.tmall.com/item.htm?id=692450874670 3)全套實驗源碼+手冊+視頻下載地址: http://www.openedv.com/thread-340252-1-1.html DMA(Direct Memory Access,直接存儲器訪問)是計算機(jī)科學(xué)中的一種內(nèi)存訪問技術(shù)。它允許某些計算機(jī)內(nèi)部的硬件子系

    2024年02月16日
    瀏覽(27)
  • 前端新手Vue3+Vite+Ts+Pinia+Sass項目指北系列文章 —— 第十一章 基礎(chǔ)界面開發(fā) (組件封裝和使用)

    前端新手Vue3+Vite+Ts+Pinia+Sass項目指北系列文章 —— 第十一章 基礎(chǔ)界面開發(fā) (組件封裝和使用)

    Vue 是前端開發(fā)中非常常見的一種框架,它的易用性和靈活性使得它成為了很多開發(fā)者的首選。而在 Vue2 版本中,組件的開發(fā)也變得非常簡單,但隨著 Vue3 版本的發(fā)布,組件開發(fā)有了更多的特性和優(yōu)化,為我們的業(yè)務(wù)開發(fā)帶來了更多便利。本文將介紹如何使用 Vue3 開發(fā)業(yè)務(wù)組件

    2024年02月19日
    瀏覽(97)
  • 第二十一回:布局約束類Widget

    我們在上一章回中介紹了進(jìn)度條Widget相關(guān)的內(nèi)容,,本章回中將介紹 布局約束類Widget 。閑話休提,讓我們一起Talk Flutter吧。 我們在這里說的布局約束表示可以控制其它Widget大小,F(xiàn)lutter中提供了一些Widget,它們專門用來控制其它Widget的大小,我將它們稱作約束布局類Widget. 之所

    2024年02月02日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包