检查类是否存在

z--*_*z-- 4 smalltalk pharo

我想检查是否已加载特定类。

Smalltalk at: #TabularXSLXExport  ifNone: [ ]
Run Code Online (Sandbox Code Playgroud)

这不会导致 Pharo 产生结果。我该怎么做呢?

Amo*_*ter 5

我认为你正在寻找的方法是#at:ifAbsent:(不是#at:ifNone:)。

因此,检查结果

Smalltalk at: #String ifAbsent: [ nil ]
Run Code Online (Sandbox Code Playgroud)

会让你检查String班级,同时

Smalltalk at: #Strign ifAbsent: [ nil ]
Run Code Online (Sandbox Code Playgroud)

将打开一个检查器nil(请注意,“Strign”是“String”的故意拼写错误,因此查找失败)。

编辑:正如 Max Leske 在评论中指出的那样,#hasClassNamed:如果您只是想确定该类是否存在,并且对返回的类本身不感兴趣,那么这是一种更合适的方法。

  • 还有“#hasClassNamed:”它将回答一个布尔值。对于您的情况来说,这可能是更好的解决方案。 (2认同)