Если вы уверены, что у карты есть определенный ключ, вы можете просто взять его напрямую: filter(i)
.Метод get
используется, если вы не уверены (или быть более осторожным в отношении ошибок).Возвращает опцию, из которой вы правильно решили использовать getOrElse
.Однако вы хотите getOrElse( (s:String) => /* some boolean */)
, то есть вы должны также вернуть функцию от String
до Boolean
.Затем вы можете применить f
, которая будет либо успешно полученной функцией с карты, либо любой функцией по умолчанию, которую вы указали в getOrElse
.
Что произошло, когда вы сказали, чтобы она возвращала Unit
, было то, чтоон подумал, так сказать: «Ну, вы говорите, что если это там, то это функция, а если это не единица… это означает, что все, что я могу сказать о типе, это то, что это объект».
В любом случае, что-то вроде
val f = func getOrElse (s: String) => true
val res = inarr.filter(f)
будет делать то, что, как я думаю, вы пытаетесь сделать (то есть фильтровать массив inarr
с помощью функции, извлеченной из карты).