나는 다음과 같은 스칼라 코드를 가지고 :이 무엇을 주위에 내 머리를 정리하기 위해 노력하고있어Scala에서이 함수를 호출하는 것이 왜 효과가 있습니까?
type Set = Int => Boolean
def contains(s: Set, element:Int): Boolean = s(element)
def singletonSet(element: Int): Set = Set(element)
val oneElementSet = singletonSet(5)
contains(oneElementSet, 5) // true
contains(oneElementSet, 6) // false
: 세트 (요소). Int 인자 대신에 요소를 대체하여 5 => Boolean을 생성하는 것처럼 보입니다. 어디에도 비교가 없으므로 oneElementSet (5)가 true를 반환하고 oneElementSet (6)이 false를 반환하는 이유는 무엇입니까?
감사합니다.
'singletonSet'에 의해 반환 된'Set'가 정의 된 전체 패키지를 확인할 수 있습니까? 나는 당신이'scala.collection.immutable'에서 정상적인'Set '을 사용하고 있다고 생각하고,'Set Set = Int => Int'를 설정하려고합니다. 코드가 여전히 작동한다면 실제로'Set'을 사용하지 않습니다. 'scala.collection.immutable'에 정의되어 있습니다. – Peter
이것은 coursera FunProg와 같습니다. Set 형에 다른 이름을 사용하여'scala.collection.immutable.Set'과의 충돌을 피할 수 있습니다 :'type MySet = Int => Boolean'과 같은 일을하고 * 작동하지 않아야합니다. 싱글 톤 세트의 impl은 운동 관점에서 잘못된 것입니다. 힌트 :'singletonSet'은 함수의 정의를 가지고 구현되어야합니다 :'Int => Boolean' – maasg
이것은 실제로 Coursera의 'Functional Programming in Scala'과정에서 나온 것입니다. 팁 주셔서 감사합니다;) – MaxK