Похожая тема уже была
здесьАвтор: VladD2
Дата: 06.03.11
, но меня интересует нечто другое.
Возможно одновременное существование структурной и номинативной типизации в обычном си-подобном языке программирования? Как можно оформить это синтаксически — чтобы было красиво и понятно?
Для примера — вариант в Scala:
class File(name: String) {
def getName(): String = name
def open() { /*..*/ }
def close() { println("close file") }
}
def test(f: { def getName(): String }) { println(f.getName) }
test(new File("test.txt"))
test(new java.io.File("test.txt"))
В Go вроде бы тоже есть нечто подобное, но не нашел примера
А можно сделать еще лучше? При этом (важно!) не ломая классического синтаксиса обычной номинативной типизации ?