2016-11-27 91 views
2

所以我有一個功能可以說:UML類圖:如果函數返回函數調用,那麼函數的返回類型是什麼?

def func(self): 
    ls = [] 
    #do something to ls 
    return self.ListParser(ls) 

def ListParser(self, ls): 
    files = [] 
    # do some stuff with ls and files 
    return files 

所以在UML類圖什麼,我把對返回類型,如果它看起來像這樣:

+ FUNC(個體經營):返回類型

做我把:

+ FUNC(個體經營):ListParser(LS)

+ FUNC(個體經營):文件[]

難道我把它終將回歸或函數調用。

謝謝。

+6

你把它會返回,因爲**這就是它返回的**。該呼叫在返回之前已解析*。它不*「[返回]函數調用」*,它返回它的結果。 – jonrsharpe

+1

所以在這種情況下,我會把+ func(self):files [],因爲它最終會返回一個列表。 –

+1

把你放入'ListParser'的東西放進去。 – jonrsharpe

回答

2

其實你的問題是不正確的。您的功能func不會返回函數,而是函數的結果。據我所知,沒有代表功能的通用類型。操作的返回是一個Type

9.6.4符號 如果圖所示,操作顯示爲以下形式的字符串:

[<visibility>] <name> ‘(‘ [<parameter-list>] ‘)’ [‘:’ [<return-type>] [‘[‘ <multiplicity-range> ‘]’] [‘{‘ <oper-property> [‘,’ <oper-property>]* ‘}’]] 

...

<return-type>是返回結果參數,如果操作有一個定義的類型。

所以如果你想返回一個函數,你或多或少可以自由地發明自己的符號。這在大多數情況下都是語言特定的(例如,在Swift中,您將顯示爲() ->()用於沒有參數的無效函數;對於Python,您可以「發明」<func>以返回函數)。

現在,如前所述,您不返回函數,而是函數的結果。這似乎是一個數組。我會假設一個字符串數組。因此,我將顯示,截至

enter image description here

假設上面是類ClassWhatEver的一部分。請注意,簽名不會列出名稱,但類型,因此對於self,您將顯示類名稱。如果你正在對Python進行建模並且有一些建模指導原則可以這樣說,那麼也可以將它離開。在這種情況下,你會需要區分靜態函數BA定型他們像這樣:

enter image description here

注:你的名字是ListParser,首都是L。雖然你應該堅持共同的命名規則,並且只使用大寫的第一個字符作爲類,類型等,而不是用於操作。所以你應該改名爲listParser

+0

有進一步的討論http://stackoverflow.com/questions/13663462/uml-representation-for-c-c-function-pointers –

+0

@PeteKirkham謝謝。不過,Uffe的解決方案非常適合EA。 –

+0

@ThomasKilian謝謝你的回答,我喜歡它相信它被解釋得很好。 –