我有一組方法,我希望調用方能夠覆蓋一個值,或者它默認爲實例變量。設置MooseX :: Method :: Signatures默認爲一個實例變量
所以我一直試圖做的是:
method foo(Str :$blah = $self->blah) {
#doStuff
}
所以我最終做這個到處
method foo(Str :$blah?) {
$blah = $self->blah unless defined $blah;
#doStuff
}
不可怕,其拋出一個解析錯誤,但似乎愚蠢時MooseX ::方法::簽名支持默認的概念,並修復了我的其他標準'start of method'行。
當我試圖做這樣的事情時,我無法找到遇到同樣問題的網絡上的其他人,所以我以錯誤的方式接近問題。看起來好像我可能試圖將一個功能程序插入到oo佈局中,而不是實際的oo,因爲這些方法是更多的輔助函數,用於在外部調用而不是在對象上運行的方法。所以只要檢查我是不是正確地定義它,或者我所做的是「啞巴」還是僅僅不受Parse :: Method :: Signatures支持。
我看到你要去哪裏與非常量值的東西。在我的腦海中,我期待着這個調用就像'除非定義'或'// ='代碼一樣。這是基於可能完全沒有根據的假設,方法簽名被解析爲它們表示和注入的子集,並且它將爲實際方法調用留下$ self。可能是時間來探討資料來源,看看它實際上做了什麼。感謝您的定義或提示,以前沒有見過。 – Matt