2017-11-13 10 views
0

, 나는 다른 함수를 반환 스칼라의 방법을 작성했습니다 :사람이 읽을 수있는 방법으로 함수가 scala의 함수 내에서 반환되는 것을 나타내는 방법은 무엇입니까? 스칼라에서 초보자로서

def foo(fnords: Seq[Fnord]): Poit => Boolean { 
    (poit: Poit) => { 
     fnords.contains(poit.fnord) 
    } 
} 
나는 종종 내가

fnords.contains(poit.fnord) 
을 반환 이유를 궁금해 코드 내 자신의 라인으로 혼동 한 것으로 나타났습니다

하나는 인간의 눈 일에 좀 더 명시 적으로 만들 수 있다면

(poit: Poit) => { 
    fnords.contains(poit.fnord) 
} 

궁금 오전 : 올바르게 전체 기능을 반환 심지어 내가 사실이지만

호출 가능 객체가 리턴되거나 이것이 스칼라 작성에 익숙해 져야만하는 경우. 나는 다음 린터를 통해 경고하고있는 명시 적으로 return를 사용하고 있었다 발견

가능한 방법 "반환 키워드는 중복"

def foo(fnords: Seq[Fnord]): Poit => Boolean { 
    return (poit: Poit) => { 
     fnords.contains(poit.fnord) 
    } 
} 

내가 변수의 내부 기능을 저장할 수 있다는 것을 알고있다, 그러나 또한 답장을 보내지 않고 명시 적으로 반환하는 것처럼 느껴집니다.

def foo(fnords: Seq[Fnord]): Poit => Boolean { 
    val filterFunction = (poit: Poit) => { 
     fnords.contains(poit.fnord) 
    } 

    filterFunction 
} 

호출 가능 객체가 scala로 반환된다는 의견을 제공하는 또 다른 방법이 있습니까?

답변

1

당신은 어느 함수로

def foo(fnords: Seq[Fnord]): Poit => Boolean = 
    (poit: Poit) => fnords.contains(poit.fnord) 

하거나

def foo(fnords: Seq[Fnord]): Poit => Boolean = 
    poit => fnords.contains(poit.fnord) 

또는 방법으로

def foo(fnords: Seq[Fnord])(poit: Poit): Boolean = 
    fnords.contains(poit.fnord) 

및 사용 쓸 수 있습니다 그것은

val f: Poit => Boolean = foo(Seq(fnord)) 
f(poit) 
내 취향

def foo(fnords: Seq[Fnord]): Poit => Boolean = { 
    val filterFunction = (poit: Poit) => fnords.contains(poit.fnord) 

    filterFunction 
} 

으로

괜찮습니다.

+1

아아 중괄호를 생략했습니다.) – k0pernikus