Обновить

Комментарии 20

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Здесь все тоже в compile-time проверяется — и так оно и будет во всех CLR-языках до тех пор, пока DLR официально не выйдет.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
ну и ну, они что через рефлексию чтоли тащат эти методы в foreach? смысл только от этого какой непонятно.
На этапе компиляции разруливают.
Я бы не назвал это утиной типизацией. Во-первых, это вообще никак не связано с системой типов. Это просто некоторое соглашение касающееся семантики определённых языковых конструкций. Во-вторых, проверка типов делается статически, а не динамически, поэтому нельзя скажем написать foreach написать по объекту типа Object, собрать, а потом в рантайме передать в это место объект класса реализующего все нужные методы… Вообщем это не duck typing.
НЛО прилетело и опубликовало эту надпись здесь
не обязан, но он должен хотя бы выглядеть как duck typing: т. е. мы не указываем конкретные типы, а просто вызываем какие-то методы, функции и т. д.

Сегодня немного людей понимают разницу между индукцией и дедукцией, а уж что такое синтаксический сахар вообще никто не знает. Правда, эти понятия за уши притянуты, но автору спасибо за попытку.
я вот думал стоит или нет называть это синтаксическим сахаром =)
Лично я вот кофе пью только с синтаксическим сахаром.: о)
>почему она недоступна в статически типизированных языках

Ocaml

class Duck =
object
method Quack = «quack»
end;;
let doQuack obj =
obj#Quack ^ "!!!";;
let doQuackAndLaugh obj =
obj#Quack ^ " " ^ obj#Laugh ^ "!!!";;
let duck = new Duck;;

let a =doQuack duck;; (*OK*)

let b = doQuackAndLaugh duck;; (*Compile error*)
НЛО прилетело и опубликовало эту надпись здесь
Интересно. Как-то реализовывал ненастоящую утиную типизацию на С# c помощью динамической генерации классов, но к сожалению сейчас показать не могу.
Зато вот тут моя статья о том, кому интересно, как подобного можно добиться в Java с помощью прокси-классов.
Пользуюсь LinFu когда надо, но если честно побаиваюсь поставлять такой код заказчикам — ведь потом тем кто поддерживает придется изучать лишнюю библиотеку. Хотя с другой стороны, dependency injection использую в коммерческом коде либерально, ибо «улучшает жизнь».
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации