type Foo(...) =
...
let a = Array.create 10 (new Foo())
let sum = Array.sum a
5
A
Respuesta
10
es necesario agregar algunos miembros que son utilizados por la función sum
para hacer el cálculo:
type Foo(value:int) =
member x.Value = value
// Two members that are needed by 'Array.sum'
static member (+) (a:Foo, b:Foo) = Foo(a.Value + b.Value)
static member Zero = Foo(0)
// Not needed for 'Array.sum', but allows 'Array.average'
static member DivideByInt(a:Foo, n:int) = Foo(a.Value/n)
La función sum
comienza con el valor devuelto por Zero
y luego añade los valores de Foo
utilizando la sobrecarga +
operador (average
luego se divide el resultado por un número entero):
let a = Array.init 10 (fun n -> Foo(n))
let sum = Array.sum a
sum.Value // Returns 45
-1
No es posible.
Cuando desee utilizar cualquier método de matriz (suma, etc.), debe usar un tipo de matriz para el almacenamiento de datos.
EDIT: Interpreté mal su pregunta. Es posible que desee intentar implementar ciertas sobrecargas del operador, como +, -, etc. Tal vez el tipo sea compatible con el método de suma.
Cuestiones relacionadas
- 1. Cómo hacer que javascript sea compatible con shebang (#!)?
- 2. C++: Haciendo que mi proyecto sea compatible con unicode
- 3. ¿Deberíamos eliminar un puntero que no sea nuevo/malloc?
- 4. ¿Qué hace que un portlet JSR-286 sea compatible?
- 5. Crear un iframe con un src vacío que sea una alternativa compatible con los estándares a "#"
- 6. ¿Hay un asignador que use alloca y que sea compatible con C++ STL?
- 7. Es nuevo C++ compatible con versiones anteriores
- 8. ¿Cómo crear una función Haskell que introduzca un nuevo tipo?
- 9. ¿Qué se necesita para escribir un ensamblaje compatible con PCI?
- 10. Cómo restringir un genérico para que sea de tipo enumeración?
- 11. En busca de un carro de compras ASP.net liviano que sea compatible con PayPal
- 12. ¿Cómo debo hacer que mi código VBA sea compatible con Windows de 64 bits?
- 13. ¿Cómo hacer que Android GridLayout sea compatible con la versión anterior?
- 14. IDE que no sea Eclipse, que es compatible con el desarrollo de Android
- 15. ¿Cómo crear un nuevo tipo System.String con otro nombre?
- 16. Cómo hacer que la aplicación de iPhone sea compatible con múltiples versiones de SDK (firmware)
- 17. ¿Cómo hacer que la base de datos Mysql sea compatible con el idioma árabe?
- 18. ¿Cómo puedo hacer que mi archivo VSIX sea compatible con VS11 y VS2010?
- 19. ¿Cómo hacer que la aplicación de Android no sea compatible con las tabletas?
- 20. ¿Cómo hacer que GDATAXML sea compatible con ARC en XCODE 4.2?
- 21. Anular propiedad con diferente tipo compatible
- 22. ¿Puedo hacer que una ventana X11 sea compatible con OpenGL después de haber sido creada?
- 23. ¿Dónde hay un lugar seguro para almacenar archivos de registro que sea compatible con XP, Vista y Windows 7?
- 24. Escribiendo un kernel compatible con POSIX
- 25. Escribir un mejor tipo natural, (que la mía)
- 26. ¿Alguien sabe de una escala de franqueo USB que sea compatible con Linux?
- 27. ¿Cómo puedo escribir una función de C++ que sea verdadera si un número real es exactamente representable con un doble?
- 28. Cómo organizar los módulos de Python para que PyPI sea compatible con 2.x y 3.x
- 29. ¿Existen razones técnicas para que EF 5 no sea totalmente compatible con .NET4.0?
- 30. ¿Es posible que la implementación libpcre de Lua no sea compatible con '\ d'?
Gracias! Por cierto, ¿qué hay de la aplicación del miembro 'Cos' en un tipo, para que también funcione con' Core.Operators.cos'? – Stringer
@Stringer: es posible también admitir 'cos' (la declaración del miembro sería' miembro estático Cos (a: Foo) = a' - tenga en cuenta que tiene que devolver el valor de tipo 'Foo' como resultado). Hay bastantes funciones de biblioteca estándar que pueden ser soportadas usando miembros ... –