2014-09-19 3 views
2

내가 함수 리터럴에 밑줄 사용하여 주위에 내 머리를 정리하려고하고 나를 난처한 상황에 빠진 다음스칼라 함수 리터럴 및 언 바운드 개체 틀 매개 변수

다음 작품 :

def g(s: Int => Int) = 1.to(10).map(s(_)) 
g(_ * 2) 

하지만이 실패

import scala.xml.Node 
def f(s: Int => Node) = 1.to(10).map(s(_)) 
f(<p>{_}</p>) 

보고되는 오류입니다 :

Error:(11, 8) unbound placeholder parameter 
f(<P>{_}</P>) 
^

설명이 무엇입니까?

답변

2

XML 리터럴 내부에서 이와 같은 자리 표시자를 사용할 수없는 것처럼 보입니다.

+0

그것은 임의적으로 보입니다. 이런 식으로 밑줄을 사용할 수없는 다른 유형이 있습니까? – calvinkrishy

+0

문자열 보간에서도 같은 상황이 발생합니다. 확신 할 수는 없지만, 파서가 중괄호 안에 (또는 문자열 보간에서'$'이후에) 완전한 표현식을 찾고있을 가능성이 높으며,'_' 자체가 표현식이 아닙니다. –

+0

그래, 난이 그래서 문자열에 자리 표시 자에 대한 답변이 나타났습니다 : http://stackoverflow.com/a/16688830/53949 – calvinkrishy

관련 문제