我有一個應用程序可以運行腳本來自動執行某些任務。我想在這些腳本中使用元編程來優化代碼大小和可讀性。因此,而不是:Groovy的metaClass的範圍?
try {
def res = factory.allocate();
... do something with res ...
} finally {
res.close()
}
我想
Factory.metaClass.withResource = { c ->
try {
def res = factory.allocate();
c(res)
} finally {
res.close()
}
}
所以編劇可以這樣寫:
factory.withResource { res ->
... do something with res ...
}
(我可以做適當的錯誤處理,等等)。
現在我想知道何時以及如何執行此操作。我可以將元類的操作附加到標題中,但是我擔心如果兩個用戶同時運行腳本(併發訪問元類)會發生什麼情況。
元類的範圍是什麼?編譯器?腳本環境? Java VM?加載Groovy的類加載器?
我的推理是,如果Groovy元類有VM範圍,那麼我可以在啓動過程中運行一次安裝腳本。每類加載器
'try:... finally:'?那是python嗎? – Will 2014-09-22 13:21:00
@WillP:好抓:-)修正。 – 2014-09-22 13:23:27