Если я правильно понимаю последствия из http://patricklogan.blogspot.com/2007/06/scala-implicits.html, тогда да, есть несколько языков, которые поддерживают это.
Лучший пример - методы расширения C #. Недавний пример, где я их использовал:
Мне часто приходилось делать расчеты расстояния между двумя Point
с. У Point
нет метода для расчета расстояния до другой точки, поэтому я добавил следующий код в свой проект:
class MyPointExtension
{
public static Double GetDistance(this Point p1, Point p2)
{
return /* the pythagoras code */
}
}
Тогда я мог бы сделать:
Point unitPosition = new Point(x,y);
Point target = new Point(x2,y2);
Double distance = unitPosition.GetDistance(target);