我經常發現我需要寫有內遞歸輔助函數功能,它採用相同的參數列表外的功能,但只有一個附加蓄能器的參數:限制隱含參數解析範圍
def encode(tree : Tree, text: String):String = {
def rec(tree: Tree, text:String, result:String):String = ???
rec(tree, text, "")
}
我想爲了簡化這個:
def encode(tree : Tree, text: String)(implicit result:String = ""):String
這可以消除內部函數的定義,但它有一個問題,看看我是否需要調用一個函數lookup
內encode
和lookup
還帶有String類型的隱式參數,implicit result:String = ""
隱式傳遞給lookup
函數。
def lookup(tree : Tree, text: String)(implicit result:String = ""):String
我不希望這種情況發生,有沒有辦法來限制從解決該函數的外lookup
的隱含參數?或者其他更好的想法?
我的直覺告訴我,這是不是一個很好的利用隱含參數列表......不幸的是,我無法解釋或證明直覺。 – 2013-05-02 16:54:29
@RandallSchulz Martin在PIS 2nd P494中使用了這種模式。 'maxListImpParm'示例,基本上就是說,該方法有一些我想傳遞的附加信息,這裏的信息是一個累加器。這裏的問題不是這種模式,它發生在任何你有隱含參數的地方,它只是隱含地傳遞,有時這違背了我的意圖,如果'lookup'沒有被我定義,我可能不知道,參數曾經通過到它。 – Sawyer 2013-05-02 17:03:45