metaclass: (Default)
[personal profile] metaclass
Наткнулся в F# на то, что для строки автоматически не делается upcast до объекта, если в описании функции для этого объекта не написать что это flexible type, т.е. вместо obj - #obj.
Flexible type параметр - это пометка, что функция принимает не только значения строго этого типа, а еще и значения с типами потомков. Соответственно, чтобы передавать любой объект в функцию, нужно писать #obj
Соответственно, если этого не написать, то единственный вариант вызова вместо "fun s" будет "fun (upcast s)". Тип оператор upcast автоматически инферится при компиляции.

Причем эта падла не дает этот flexible type использовать в декларациях типов, в спецификации написано что можно использовать только в member declarations.

Date: 2010-06-14 06:57 am (UTC)
From: [identity profile] metaclass.livejournal.com
Нет, я пока F# код никуда не деплоил, он тут на этапе разработки используется для кодогенерации.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 2nd, 2025 03:55 am
Powered by Dreamwidth Studios