Pull to refresh

Comments 20

UFO landed and left these words here
UFO landed and left these words here
Здесь все тоже в compile-time проверяется — и так оно и будет во всех CLR-языках до тех пор, пока DLR официально не выйдет.
UFO landed and left these words here
UFO landed and left these words here
UFO landed and left these words here
UFO landed and left these words here
ну и ну, они что через рефлексию чтоли тащат эти методы в foreach? смысл только от этого какой непонятно.
Я бы не назвал это утиной типизацией. Во-первых, это вообще никак не связано с системой типов. Это просто некоторое соглашение касающееся семантики определённых языковых конструкций. Во-вторых, проверка типов делается статически, а не динамически, поэтому нельзя скажем написать foreach написать по объекту типа Object, собрать, а потом в рантайме передать в это место объект класса реализующего все нужные методы… Вообщем это не duck typing.
UFO landed and left these words here
не обязан, но он должен хотя бы выглядеть как 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*)
UFO landed and left these words here
Интересно. Как-то реализовывал ненастоящую утиную типизацию на С# c помощью динамической генерации классов, но к сожалению сейчас показать не могу.
Зато вот тут моя статья о том, кому интересно, как подобного можно добиться в Java с помощью прокси-классов.
Пользуюсь LinFu когда надо, но если честно побаиваюсь поставлять такой код заказчикам — ведь потом тем кто поддерживает придется изучать лишнюю библиотеку. Хотя с другой стороны, dependency injection использую в коммерческом коде либерально, ибо «улучшает жизнь».
Sign up to leave a comment.

Articles