Sto imparando F # e ho un po 'di esperienza con Python. Mi piacciono molto i decoratori di funzioni di Python; Mi stavo chiedendo se abbiamo qualcosa di simile in F #?C'è qualcosa di simile ai decoratori di funzioni Python nel linguaggio di programmazione F #?
5
A
risposta
9
Non c'è zucchero sintattico per i decoratori di funzioni in F #.
Per i tipi, è possibile utilizzare l'attributo StructuredFormatDisplay
per personalizzare il contenuto di stampa. Ecco un esempio da F# 3.0 Sample Pack:
[<StructuredFormatDisplayAttribute("MyType is {Contents}")>]
type C(elems: int list) =
member x.Contents = elems
let printfnSample() =
printfn "%A" (C [1..4])
// MyType is [1; 2; 3; 4]
Per le funzioni, si può facilmente esprimere Python's decorators utilizzando la funzione di composizione. Ad esempio, this Python example
def makebold(fn):
def wrapped():
return "<b>" + fn() + "</b>"
return wrapped
def makeitalic(fn):
def wrapped():
return "<i>" + fn() + "</i>"
return wrapped
@makebold
@makeitalic
def hello():
return "hello world"
può essere tradotto in F # come segue
let makebold fn =
fun() -> "<b>" + fn() + "</b>"
let makeitalic fn =
fun() -> "<i>" + fn() + "</i>"
let hello =
let hello = fun() -> "hello world"
(makebold << makeitalic) hello
Problemi correlati
- 1. decoratori di funzioni in C#
- 2. Come testare i decoratori di funzioni Python?
- 3. Esistono modelli nel linguaggio di programmazione C?
- 4. Stack e heap nel linguaggio di programmazione
- 5. Analisi lessicale del linguaggio di programmazione Python
- 6. Linguaggio di programmazione misterioso
- 7. Decoratori di funzioni annidate che operano su argomenti in python
- 8. Analizzatore Python per linguaggio simile a Python
- 9. Funzioni membro di chiamata F # nel costruttore
- 10. Programmazione linguaggio assembly di Windows
- 11. Agda come linguaggio di programmazione
- 12. C'è qualcosa come decoratori pitone per C#?
- 13. Quale linguaggio di programmazione funzionale dovrei scegliere come primo linguaggio di programmazione funzionale?
- 14. Come implementeresti un linguaggio di programmazione funzionale?
- 15. Utilizzo di decoratori su lambda in Python?
- 16. F #: funzioni di sovraccarico
- 17. Memorizzazione di funzioni nel dizionario [Python]
- 18. Concorrenza in stile Erlang nel linguaggio di programmazione D
- 19. CMS in linguaggio di programmazione funzionale
- 20. Creare un linguaggio di programmazione con C#
- 21. Fogli di calcolo che utilizzano un linguaggio di programmazione funzionale
- 22. Nel linguaggio di programmazione Go, è possibile ottenere il tipo di una variabile come stringa?
- 23. Esperienze con linguaggio di programmazione D
- 24. cosa significano "_" e "in" nel linguaggio di programmazione Swift?
- 25. Come definire i miei operatori nel linguaggio di programmazione Io?
- 26. Data e ora nel linguaggio di programmazione C
- 27. Ordinamento diretto sul posto nel linguaggio di programmazione D
- 28. Come rappresentare un campo binario nel linguaggio di programmazione?
- 29. Github riconosce erroneamente il linguaggio di programmazione utilizzato nel progetto
- 30. metaclassi Python vs decoratori di classe
Vedi anche [equivalente funzionale del modello decorator?] (Http://stackoverflow.com/questions/7064389/functional -equivalent-di-decorator-pattern). – nneonneo