2016-11-27 92 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谢谢你的回答,我喜欢它相信它被解释得很好。 –