필자는 명령적이고 기능적인 (나는 최선을 다했다) 방법으로 구현했습니다. 이 방법은 ArrayBuffer [Creature]를 반복하고, 각 생물과의 거리를 계산하고 가장 가까운 값 또는 None 값을 반환합니다 ('this'를 제외한 모든 생물체가없는 경우).명령과 기능별 비교
명령형 :
private def closestEnemy: Option[Creature] = {
var closest: Option[Creature] = None
var distanceToClosest = Int.MaxValue
for(creature <- game.creatures if creature != this) {
val distance = distanceTo(creature)
if(distance < distanceToClosest) {
closest = Some(creature)
distanceToClosest = distance
}
}
closest
}
기능 :
은 기능적인 코드가 덜 분명 보이는private def closestEnemy: Option[Creature] =
game.creatures filter { _ != this } map { creature => (creature, distanceTo(creature)) } match {
case creaturesWithDistance if creaturesWithDistance.isEmpty => None
case creaturesWithDistance => Some(creaturesWithDistance minBy { _._2 } _1)
}
(아마도 그것은 간단하게 할 수 있지만이 표시되지 않습니다) 그리고 난 잘 모르겠어요 I 한 달 안에 그것을 읽을 수 있습니다. 제 질문은이 습관이나 기능적 문제가이 특별한 경우에 좋지 않은가요? Scala를 시작할 때 그런 의심을 했습니까? 얼마 지나지 않아 기능적인 기술이 크게 향상 되었습니까? 귀하의 경험을 게시하십시오.
감사합니다.
FAQ를 참조하시기 바랍니다. –
다음을 시도해보십시오. http://aperiodic.net/phil/scala/s-99/ –
이 질문은 여기 유효하지 않습니다 (프로그래머의 경우 _ 또는 _). [Quora] (http://quora.com)와 같이 자유로운 질문을 수용 할 수있는 다른 곳을 방문해 보시기 바랍니다. 한편, [Code Review] (http://codereview.stackexchange.com)에 기능 코드를 게시하여 의견을 요청할 수 있습니다. –