0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Classes -方法參數(shù)

科技綠洲 ? 來(lái)源:技術(shù)理科直男 ? 作者:技術(shù)理科直男 ? 2023-09-20 14:27 ? 次閱讀

方法參數(shù)

方法可以在逗號(hào)分隔的列表中接受位置參數(shù)。對(duì)于每個(gè)參數(shù),可以指定類型和默認(rèn)值。

例如,下面是一個(gè)接受三個(gè)參數(shù)的方法的部分定義。這對(duì)IRIS類中的ObjectScriptPython方法都是有效的語(yǔ)法:

Method Calculate(count As %Integer, name, state As %String = "CA") as %Numeric
{
    // ...
}

注意,其中兩個(gè)參數(shù)具有顯式類型,一個(gè)參數(shù)具有默認(rèn)值。通常,顯式指定每個(gè)參數(shù)的類型是個(gè)好主意。

注意:如果一個(gè)方法是在Python中定義的,并且有任何帶有默認(rèn)值的參數(shù),那么這些參數(shù)必須位于參數(shù)列表的末尾,以避免編譯錯(cuò)誤。

跳過(guò)參數(shù)

調(diào)用方法時(shí),如果有合適的默認(rèn)值,可以跳過(guò)參數(shù)。ObjectScriptPython都有自己的語(yǔ)法來(lái)跳過(guò)參數(shù)。

在ObjectScript中,可以通過(guò)不為參數(shù)提供值并保持逗號(hào)結(jié)構(gòu)來(lái)跳過(guò)該參數(shù)。例如:

set myval=##class(mypackage.myclass).GetValue(,,,,,,4)

IRIS類中,Python方法的簽名必須首先列出所需的參數(shù),然后是具有默認(rèn)值的任何參數(shù)。

調(diào)用方法時(shí),必須按照方法簽名的順序提供參數(shù)。因此,一旦你跳過(guò)了一個(gè)參數(shù),你也必須跳過(guò)它后面的所有參數(shù)。例如:

ClassMethod Skip(a1, a2 As %Integer = 2, a3 As %Integer = 3) [ Language = python ]
{
    print(a1, a2, a3)
}
TESTNAMESPACE >do ##class(mypackage.myclass).Skip(1)
1 2 3

通過(guò)值或引用傳遞變量

當(dāng)調(diào)用一個(gè)方法時(shí),可以通過(guò)值或引用將變量的值傳遞給該方法。

方法的簽名通常表明是否打算通過(guò)引用傳遞參數(shù)。例如:

Method MyMethod(argument1, ByRef argument2, Output argument3)

ByRef關(guān)鍵字指示應(yīng)該通過(guò)引用傳遞此參數(shù)。Output關(guān)鍵字指示應(yīng)該通過(guò)引用傳遞此參數(shù),并且該方法忽略最初給此參數(shù)的任何值。

類似地,當(dāng)定義一個(gè)方法時(shí),可以在方法簽名中使用ByRefOutput關(guān)鍵字來(lái)通知其他用戶該方法的使用方式。

要在ObjectScript中通過(guò)引用傳遞參數(shù),請(qǐng)?jiān)谡{(diào)用方法時(shí)在變量名之前放置一個(gè)句號(hào)。在Python中,對(duì)要傳遞的值使用iris.ref(),并在引用上調(diào)用該方法。這兩個(gè)都顯示在下面的例子中:

Do MyMethod(arg1, .arg2, .arg3)
arg2=iris.ref("peanut butter")
arg3=iris.ref("jelly")
MyMethod(arg1,arg2,arg3)

重要信息ByRefOutput 關(guān)鍵字提供的信息對(duì)于使用 類引用的任何人都有利。它們不影響代碼的行為。方法的編寫(xiě)者有責(zé)任強(qiáng)制執(zhí)行有關(guān)如何調(diào)用該方法的任何規(guī)則。

可變數(shù)量的參數(shù)

可以定義一個(gè)方法,使其接受可變數(shù)量的參數(shù)。例如:

ClassMethod MultiArg(Arg1... As %List) [ Language = objectscript ]
{
 Set args = $GET(Arg1, 0)
 Write "Invocation has ",
     args,
     " element",
     $SELECT((args=1):"", 1:"s"), !
 For i = 1 : 1 : args
 {
     Write "Argument[", i , "]: ", $GET(Arg1(i), "< NULL >"), !
 }
}
ClassMethod MultiArg(Arg1... As %List) [ Language = Python ]
{
    print("Invocation has", len(Arg1), "elements")
    for i in range(len(Arg1)):
        print("Argument[" + str(i+1) + "]: " + Arg1[i])
}

指定默認(rèn)值

要在 ObjectScriptPython 方法中指定參數(shù)的默認(rèn)值,請(qǐng)使用以下示例中所示的語(yǔ)法:

Method Test(flag As %Integer = 0)
{
 //method details
}

調(diào)用方法時(shí),它會(huì)對(duì)任何缺少的參數(shù)使用其默認(rèn)值(如果指定)。如果方法是用 Python 編寫(xiě)的,則任何具有默認(rèn)值的參數(shù)都必須在參數(shù)列表的末尾定義。

ObjectScript 中,另一個(gè)選項(xiàng)是使用 $GET 函數(shù)設(shè)置默認(rèn)值。例如:

Method Test(flag As %Integer)
{
  set flag=$GET(flag,0)
 //method details
}

但是,這種技術(shù)不會(huì)影響類簽名。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 參數(shù)
    +關(guān)注

    關(guān)注

    11

    文章

    1733

    瀏覽量

    31982
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4697

    瀏覽量

    68083
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    647

    瀏覽量

    32742
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    PID參數(shù)的意義與整定方法

    PID參數(shù)的意義與整定方法資料
    發(fā)表于 07-31 09:17

    極大似然參數(shù)辨識(shí)方法

    極大似然參數(shù)辨識(shí)方法.ppt
    發(fā)表于 08-13 15:51

    最小二乘參數(shù)辨識(shí)方法及原理

    最小二乘參數(shù)辨識(shí)方法及原理.ppt
    發(fā)表于 08-13 15:54

    AD解決ADD Component Classes出錯(cuò)的解決方法

    解決ADD Component Classes出錯(cuò)的問(wèn)題。提示是Failed to add class member:xxx 和 Unknown Pin
    發(fā)表于 07-05 08:30

    Altium解決Failed to add class member 問(wèn)題的方法

    我們?cè)O(shè)計(jì)時(shí),在導(dǎo)入PCB時(shí)有時(shí)候會(huì)出現(xiàn)Failed to add class member 的錯(cuò)誤提示;解決方法如下:1. 在PCB界面 design–classes; 2.Component Classes刪掉出現(xiàn)問(wèn)題的
    發(fā)表于 10-08 14:04

    請(qǐng)問(wèn)電機(jī)參數(shù)的含義及測(cè)量方法是什么?

    請(qǐng)問(wèn)電機(jī)參數(shù)的含義及測(cè)量方法是什么?
    發(fā)表于 10-19 08:54

    PID參數(shù)的基本調(diào)試方法是什么?

    PID參數(shù)的基本調(diào)試方法是什么?
    發(fā)表于 11-15 07:01

    PID溫度控制參數(shù)整定的方法是什么

    PID溫度控制參數(shù)整定的方法是什么?
    發(fā)表于 11-22 06:13

    電阻的型號(hào)命名方法,分類,主要特性參數(shù)

    電阻的型號(hào)命名方法,分類,主要特性參數(shù)
    發(fā)表于 06-30 19:31 ?2693次閱讀

    PID參數(shù)的確定方法

    下面介紹的方法,包括著眼于使系統(tǒng)閉環(huán)極點(diǎn)落在希望的位置,依靠解析的方法確定PID參數(shù);以及針對(duì)復(fù)雜的受控對(duì)象數(shù)學(xué)模型,借助于實(shí)驗(yàn)的方法確定PID參數(shù)
    發(fā)表于 04-28 15:57 ?0次下載

    PID參數(shù)整定方法的研究

    PID參數(shù)整定方法的研究-2009,下來(lái)看看。
    發(fā)表于 03-31 17:01 ?20次下載

    永磁同步電機(jī)控制參數(shù)設(shè)計(jì)方法

    永磁同步電機(jī)控制參數(shù)設(shè)計(jì)方法_邱騰飛
    發(fā)表于 01-05 15:34 ?22次下載

    java方法參數(shù)傳遞簡(jiǎn)析

    問(wèn):當(dāng)一個(gè)對(duì)象被當(dāng)作參數(shù)傳遞到一個(gè)方法后,此方法可改變這個(gè)對(duì)象的屬性,并可返回變化后的結(jié)果,那么這里到底是值傳遞還是引用傳遞? 答:是值傳遞。Java 編程語(yǔ)言只有值傳遞參數(shù)。當(dāng)一個(gè)對(duì)
    發(fā)表于 09-27 17:03 ?0次下載
    java<b class='flag-5'>方法</b><b class='flag-5'>參數(shù)</b>傳遞簡(jiǎn)析

    TVS參數(shù)及選型方法pdf下載

    TVS參數(shù)及選型方法
    發(fā)表于 01-24 16:43 ?35次下載

    參數(shù)域邊界平直化的模型表面參數(shù)方法

    為了支持簡(jiǎn)化模型紋理邊界、滿足模型簡(jiǎn)化中紋理映射需求,提出了一種參數(shù)域邊界平直化的模型表面參數(shù)方法。給出了由變換能量、防翻轉(zhuǎn)能量和稀疏能量組成的能量方程。求解時(shí)引λ輔助變量并求得近似解。實(shí)驗(yàn)中分
    發(fā)表于 04-27 14:19 ?7次下載
    <b class='flag-5'>參數(shù)</b>域邊界平直化的模型表面<b class='flag-5'>參數(shù)</b>化<b class='flag-5'>方法</b>