2014-03-27 76 views
4

假設我導入了std.algorithm.BinaryHeap,並且想要調用它的removeAny方法(例如,delete_min)。如果我從std.algorithm本身導入方法,我可以寫這樣的事:別名D中的對象方法

import std.algorithm: removeAny; 
alias delete_min = removeAny; 

不過,我顯然不能做到這一點,因爲removeAnyBinaryHeap的方法。我怎樣才能將它別名?

回答

6

我認爲最好的,如果不能做到這一點的唯一方法是定義一個短的擴展方法:

auto delete_min(T...)(ref BinaryHeap _this, T other_args_here) { 
    return _this.removeAny(other_args_here); 
} 

然後你就可以調用爲yourthing.delete_min(other_args)和編譯器應該內嵌它破壞了其他的小層。