Синтаксис для применения набора функций к объекту - PullRequest
3 голосов
/ 08 августа 2011

Я пытаюсь определить правильный синтаксис в Scala для применения набора функций к объекту.Скажем, у меня есть класс:

class MiTestClass {
   def isValid() : Bool = {...}
   def isGreen() : Bool= {...}
   def isYellow() : Bool = {...}
}

, и я создаю новый объект val miTestObj = new MiTestClass, теперь я хочу применить подмножество методов к моему объекту, например

val conditions:List[MiTestClass => Boolean] = List(_.isGreen, _.isYellow)

, и выполнить некоторыенапример, для проверки того, что все свойства содержат

val result:Bool  = resultOfApplyingFunctions.foldLeft(true)(and)

Каков синтаксис для получения такой функциональности?В Хаскеле вы могли бы написать что-то вроде

map (\f -> f miTestObj) conditions

, но я не могу получить правильный синтаксис Scala

Ответы [ 2 ]

6 голосов
/ 08 августа 2011
scala> val conditions: List[MiTestClass => Boolean] = List(_.isGreen, _.isYellow) 
conditions: List[(MiTestClass) => Boolean] = List(<function1>, <function1>)

scala> val obj = new MiTestClass
obj: MiTestClass = MiTestClass@3dc049d

scala> conditions.forall(_(obj))
res1: Boolean = false

scala> conditions.forall(f => f(obj)) // slightly more verbose way
res2: Boolean = false
5 голосов
/ 08 августа 2011
conditions.map(f => f(miTestObj))

или

conditions map (_(miTestObj))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...