有哪些語言可以做到:List<T> 實現介面 I(或繼承某個類)當且僅當 T 實現 I?
instance (Show a) =&> Show [a] where
C++,使用的時候直接寫List&
template&
struct List
{
};
template&
struct List&
{
};
Python,可以用abc(打死)issubclass和isinstance可以hook的語言……
Scala
implicit def toIL[T, I](li: List[T &<: I]) = new I {...}C++ 模板的另一個寫法:
#include&
struct IDisposable
{
virtual void Dispose() = 0;
virtual ~IDisposable() { }
};
struct SomeIDisposable : virtual IDisposable
{
void Dispose() { }
};
template &
struct ConditionalImpl
{
};
template &
struct ConditionalImpl&
{
void Dispose() { }
};
int main()
{
ConditionalImpl&
// a.Dispose(); // fails
ConditionalImpl&
b.Dispose(); // succeeds
return 0;
}
更安全的則是分別實現 true、false 的情況,然後 using 防止有人提供第二個參數。
JAVA List& extends T&> 表示T為上界
c#
interface IShit {
}class Fuck&}
java
public class A{
}
public class List&
}
推薦閱讀:
※關於MSIL中的Nop的問題?
※xamarin 怎麼發音?
※快速開發桌面程序用什麼技術合適?
※async/await非同步模型是否優於stackful coroutine模型?
※學習 ASP.NET MVC 框架有什麼好的視頻教程或書籍?