type Foo(...) =
...
let a = Array.create 10 (new Foo())
let sum = Array.sum a
5
A
답변
10
당신은 계산을 수행 할 sum
기능에 의해 사용되는 몇 구성원을 추가해야합니다
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)
sum
기능 Zero
에 의해 반환되는 값으로 시작하고 오버로드 된 사용 Foo
의 값을 추가합니다 +
연산자 (average
은 결과를 정수로 나눕니다) :
let a = Array.init 10 (fun n -> Foo(n))
let sum = Array.sum a
sum.Value // Returns 45
-1
불가능합니다.
Array (sum 등)의 메서드를 사용하려면 데이터 저장소에 배열 형식을 사용해야합니다.
편집 : 질문을 잘못 해석했습니다. +, - 등의 특정 연산자 오버로드를 구현하려고 할 수 있습니다. 그러면 유형이 sum 메소드를 지원할 수 있습니다.
관련 문제
- 1. 여러 유형을 허용하는 함수를 작성하는 방법은 무엇입니까?
- 2. Windows와 호환되는 방법은 무엇입니까?
- 3. 여러 enum 유형을 사용하여 주석을 작성하는 방법은 무엇입니까?
- 4. 매번 새로운 행의 데이터 테이블을 작성하는 방법은 무엇입니까?
- 5. PHP에서 통일 된 새로운 라인을 작성하는 방법은 무엇입니까?
- 6. WPF에서 조건문을 작성하는 방법은 무엇입니까?
- 7. 파일 입력과 호환되는 해결 방법은 무엇입니까?
- 8. 호환되는 CLDC 버전의 전화를 감지하는 방법은 무엇입니까?
- 9. XHTML과 호환되는 점은 무엇입니까?
- 10. gprof와 호환되는 컴파일러는 무엇입니까?
- 11. 내 프로젝트와 호환되는 플랫폼은 무엇입니까?
- 12. 10.6과 호환되는 OSX 10.7 응용 프로그램을 제출하는 방법은 무엇입니까?
- 13. 일반적인 유형을 비교하는 방법은 무엇입니까?
- 14. 유형을 제네릭으로 변환하는 방법은 무엇입니까?
- 15. 컬렉션 유형을 찾는 방법은 무엇입니까?
- 16. 화살촉 유형을 변경하는 방법은 무엇입니까?
- 17. enum 유형을 테스트하는 방법은 무엇입니까?
- 18. civicrm에서 매핑 유형을 만드는 방법은 무엇입니까?
- 19. 큰 불변 유형을 인스턴스화하는 방법은 무엇입니까?
- 20. 새로운 컴파일러를 빌드하는 좋은 방법은 무엇입니까?
- 21. 보안 문자를 작성하는 방법은 무엇입니까?
- 22. sqlite에서이 쿼리를 작성하는 방법은 무엇입니까?
- 23. 이베이처럼 앱을 작성하는 방법은 무엇입니까?
- 24. MIDI로 코드를 작성하는 방법은 무엇입니까?
- 25. MySQL REGEXP를 작성하는 방법은 무엇입니까?
- 26. eshell 스크립트를 작성하는 방법은 무엇입니까?
- 27. 광도계 프로그램을 작성하는 방법은 무엇입니까?
- 28. 정규식 패턴을 작성하는 방법은 무엇입니까?
- 29. 생산적인 사양을 작성하는 방법은 무엇입니까?
- 30. WSDL을 WCF로 작성하는 방법은 무엇입니까?
고마워요! BTW,'Cos' 멤버를 구현하면 어떨까요? Core.Operators.cos와도 같이 작동합니까? – Stringer
@Stringer : 'cos'를 지원할 수도 있습니다 (멤버 선언은 정적 멤버 Cos (a : Foo) = a' - 결과로 'Foo' 유형의 값을 반환해야 함). 멤버를 사용하여 지원할 수있는 몇 가지 표준 라이브러리 함수가 있습니다. –