이것은 매우 간단해야하지만이 메서드를 작성하는 방법을 알 수는 없습니다.스칼라에서 메서드를 인수로 전달
max
또는 min
이 seq
인 다음과 같은 기능을 원합니다.
def maxOrMin_2(seq: IndexedSeq[Int], maxMin: IndexedSeq[Int] => Int): Int = seq.maxOrMin
을하지만 컴파일러는 value maxOrMin is not a member of IndexedSeq[Int]
를 말한다 :
def maxOrMin_1(seq: IndexedSeq[Int], maxMin: IndexedSeq[Int] => Int): Int = maxMin(seq)
하지만 그 대신 함수로 maxMin
, 나는 내가 쓸 수 있도록이 IndexedSeq
하는 방법 싶습니다. 또한
, 내가 maxOrMin_2
를 호출 할 때 다음과 같이 (내가 그것을 작성하는 방법을 알아낼 수 있었다 가정) :
maxOrMin_2(IndexedSeq(1, 2, 3), IndexedSeq.max)
나는 컴파일러 메시지가 : value max is not a member of object IndexedSeq
합니다.
이 글을 쓰는 방법을 아는 것이 좋습니다. 감사.
업데이트 : 나는 방금 이런 문제를 해결할 수 있음을 발견했다.
maxOrMin_2(IndexedSeq(1, 2, 3), (xs: IndexedSeq[Int]) => xs.max)
저도 조금 어리 석습니다. 그러나 더 좋은 방법이 없다면 나는 그것이 가능할 것이라고 생각합니다.
업데이트 : 이제는 어떻게 호출해야합니까? maxOrMin_1
이 정상적으로 작동합니다.
maxOrMin_1(IndexedSeq(1, 2, 3), (xs: IndexedSeq[Int]) => xs.max)
더 좋은 답변이 있습니까?
일반적으로 대답은 아마도 "업데이트"와 비슷할 것입니다. 즉 "기능 프로그래밍"입니다. 그러나 현실 세계에서 문제가 발생했다면 나는 한 걸음 물러서서 자신이하려는 것을 확실히하기 위해 관련된 유형과 기능 서명을 살펴 보시기 바랍니다. 스칼라와 같이 강력한 형식의 언어에서는 함수 "fooOrBar"를 호출하면 실제로 foo와 bar뿐만 아니라 baz가 전달되도록 허용 할 때 이상하게 보입니다. –
'max' 또는'min'을 원합니다. 거기에 매개 변수를 제한하는 방법이 있습니까? 더 큰 그림 : 이것은 플레이어에 따라 최대 또는 최소를 취하는 미니 맥스의 일부입니다. 나는 미니 맥스가 쓰여질 수 있다는 것을 알고있다.,'max',하지만 만약 내가 이것을 원한다면 어떻게 향상시킬 수 있을까? – RussAbbott
부울을 선택하지 않는 이유는 무엇입니까? –