2014-11-18 5 views
0

Я получил двухмерного массива в Scala сделаны сScala вложенная подстановочные заполнители

val arr = Array(Array()) 

И я хочу, чтобы сделать безопасную добычу из него с опцией. Я хотел использовать подстановочные знаки, но в то время как это работает:

def get(x:Int, y: Int) = arr lift x flatMap { _ lift y map { a=>a } } 

Это не

def get(x:Int, y: Int) = arr lift x flatMap { _ lift y map { _ } } 

Может кто-нибудь объяснить мне, в чем разница?

+0

Зачем вам нужна дополнительная операция 'map' в конце? Похоже, все, что вам нужно, это '_ lift y' – wheaties

+0

Wow. Ты прав! Я просто перенапряг карты –

ответ

1

_ сам по себе не расширяется до x => x или identity

Что вы можете использовать вместо этого является identity predef:

def get(x: Int, y: Int) = arr lift x flatMap { _ lift y map {identity} } 

Смотрите раздел 6.23.1 Scala Language Specification.

+0

Также см. Этот ответ: http://stackoverflow.com/a/4431541/2292812 –

Смежные вопросы