在IDL

2016-05-13 30 views
1

物品數量不正確,這是我的IDL-源代碼標題:在IDL

pro gamow,t_plasma,z1=z1,z2=z2,a1=a1,a2=a2 

; displays gamow peak for input value of t (in K) 
; default values for protons 
    if not keyword_set(z1) then z1=1. 
    if not keyword_set(z2) then z2=1. 
    if not keyword_set(a1) then a1=1. 
    if not keyword_set(a2) then a2=1. 

我執行該終端/控制檯,使用,例如:

蓋莫夫,1D8

這是有效的,因爲z1 = z2 = a1 = a2 = 1.0。而1d8意味着1億美元。但是,這並不工作:

伽莫夫,1D8,2,2,4,4

爲什麼呢?

問候

回答

1

您定義t_plasma作爲位置參數,但z1z2a1a2作爲關鍵字參數。你的第一個例子只傳遞一個位置 參數,所以t_plasma被定義,其他參數不是,這很好。你的 第二個例子試圖傳遞所有5個參數作爲位置參數,但只定義了一個位置參數。因此,IDL報告錯誤「參數數量不正確」。

相反,試試這個:

gamow,1d8,z1=2,z2=2,a1=4,a2=4 
+0

只是一個快速的注意 - 在Python中,你可以指定「關鍵字」用實際的名稱或是僅僅作爲位置參數 - 任何一個都只要位置參數是工作按正確的順序。在IDL中,位置參數和關鍵字參數是有區別的。位置參數必須按順序排列,儘管您不必指定所有這些參數。關鍵字參數必須使用關鍵字名稱,並且它們可以按任意順序排列。 [編輯點評:在我看來,IDL方法更好,因爲它增強了代碼的可讀性並避免了神祕的錯誤。] –