Here è la documentazione su Predef
, ma non si parla di identità. A cosa serve questa funzione? E cosa fa?Cosa fa Predef.identity in scala?
risposta
È solo un'istanza di identity function, predefinita per comodità, e forse per impedire alle persone di ridefinirlo da sole un sacco di volte. identity
restituisce semplicemente il suo argomento. A volte può essere utile passare a funzioni di ordine superiore. Si potrebbe fare qualcosa del tipo:
scala> def squareIf(test: Boolean) = List(1, 2, 3, 4, 5).map(if (test) x => x * x else identity)
squareIf: (test: Boolean)List[Int]
scala> squareIf(true)
res4: List[Int] = List(1, 4, 9, 16, 25)
scala> squareIf(false)
res5: List[Int] = List(1, 2, 3, 4, 5)
Ho anche visto usato come valore di argomento di default a volte. Ovviamente, puoi semplicemente dire x => x
in qualsiasi posto tu possa usare identity
, e potresti persino salvare un paio di caratteri, quindi non ti compra molto, ma può essere auto-documentante.
Oltre a ciò che acjay ha già menzionato, la funzione Identità è estremamente utile in combinazione con parametri impliciti.
Supponiamo di avere una qualche funzione in questo modo:
implicit def foo[B](b: B)(implicit converter: B => A) = ...
In questo caso, la funzione di identità sarà utilizzato come convertitore implicita quando alcuni istanza di B <: A viene passato come primo argomento di funzione.
Se non si ha familiarità con le conversioni implicite e come utilizzare i parametri impliciti a catena di loro, leggere questo: http://docs.scala-lang.org/tutorials/FAQ/chaining-implicits.html
- 1. Cosa fa Predef.locally e come è diverso da Predef.identity
- 2. Cosa fa il simbolo del dollaro in scala
- 3. Cosa significa "That" in Scala
- 4. Cosa fa? in C?
- 5. Cosa fa === in PHP
- 6. Cosa - fa in Excel?
- 7. Cosa fa == in Ruby?
- 8. Cosa fa il nuovo tipo di scala dinamica?
- 9. Cosa fa l'operatore | = fa in JavaScript?
- 10. Cosa fa "12345" + 2 fa in C?
- 11. Cosa significa $() in Scala?
- 12. Cosa significa _ :: in Scala?
- 13. Cosa fa?
- 14. Cosa fa [:]?
- 15. Tensorflow: cosa fa tf.nn.separable_conv2d?
- 16. Cosa fa: _ * fa quando chiama un metodo vararg Java da Scala?
- 17. cosa fa !! fare in rubino?
- 18. Cosa fa opt.apply_gradients() in TensorFlow?
- 19. Cosa fa? fare in Elixir
- 20. Cosa fa questo in javascript?
- 21. Che cosa fa * in CSS?
- 22. Cosa fa "$ (@: H)" in MakeFile?
- 23. cosa fa int() in C++?
- 24. Cosa fa fpstrict in Java?
- 25. Cosa fa !! significa in rubino?
- 26. Cosa fa esattamente # in C?
- 27. Cosa fa this.async() in JavaScript
- 28. Cosa fa "for (;;)" in C#?
- 29. Che cosa fa% {} in Ruby?
- 30. Cosa fa "with" in JavaScript?
fantastico consiglio per il modello di convertitore di dati comune – radke