SELECT cars,
MAX( CASE item WHEN 'color' THEN value END ) AS color,
MAX( CASE item WHEN 'price' THEN value END ) AS price,
MAX( CASE item WHEN 'wheels' THEN value END ) AS wheels
FROM Cars
GROUP BY cars;
Выходы:
CARS PRICE COLOR WHEELS
-------- ----- ------ ------
lambo 7 yellow 5
mercedes 6 black 4
bmw 5 red 4
Вы можете легко определить один, используя шаблон Pimp My Library.
scala> implicit def intWithTimes(n: Int) = new {
| def times(f: => Unit) = 1 to n foreach {_ => f}
| }
intWithTimes: (n: Int)java.lang.Object{def times(f: => Unit): Unit}
scala> 5 times {
| println("Hello World")
| }
Hello World
Hello World
Hello World
Hello World
Hello World
def times(f: => Unit)(cnt:Int) :Unit = {
List.fill(cnt){f}
}
В классе Range есть метод foreach, который, я думаю, именно то, что вам нужно. Например, такой:
0.to(5).foreach(println(_))
произвел
0
1
2
3
4
5
Я ничего не знаю в библиотеке. Вы можете определить неявное преобразование служебной программы и класс, который можно импортировать по мере необходимости.
class TimesRepeat(n:Int) {
def timesRepeat(block: => Unit): Unit = (1 to n) foreach { i => block }
}
object TimesRepeat {
implicit def toTimesRepeat(n:Int) = new TimesRepeat(n)
}
import TimesRepeat._
3.timesRepeat(println("foo"))
Рахул только что отправил аналогичный ответ, пока я писал это ...