История изменений
Исправление
stevejobs,
(текущая версия)
:
про названия идентификаторов частично согласен. Лучше было бы вообще сделать идентификаторы без названия. Мы же не обращаемся к промежуточным элементам, зачем нам их имена? Но джава так не умеет, приходится писать какое-нибудь говнецо в имя.
а вот про типы не согласен. Нам же неважно, что там будут за промежуточные типы, мы их нигде не используем, это просто какие-то переходные формы в трансформации
вот и пример скалы как «улучшенной джавы»
более полно:
scala> val helpers = Vector("adam", "kim", "melissa")
helpers: scala.collection.immutable.Vector[java.lang.String] =
Vector(adam, kim, melissa)
// the long form
scala> val caps = helpers.map(e => e.capitalize)
caps: scala.collection.immutable.Vector[String] = Vector(Adam, Kim, Melissa)
// the short form
scala> val caps = helpers.map(_.capitalize)
caps: scala.collection.immutable.Vector[String] = Vector(Adam, Kim, Melissa)
слева никаких типов, только val. У вектора никакого спецификатора типа. Компилятор сам выведет тип, если ему очень надо.
Из (e => e.capitalize) выбросили нафиг идентификатор e.
Всё работает, всё ок.
Т.е. код из топика можно было бы еще лучше записать, если бы Джава не заставляла тащить вместе с кодом мусор.
Конечно повышение. Сейчас это прочитать вообще невозможно. С циклами это станет возможно.
ты привык к циклам, привык смотреть на цикл и выводить из него «что этот цикл делает». К цепи трансформаций тоже надо привыкнуть.
ты к циклам сколько привыкал, годы? К этому тоже нужно привыкать. Но меньше, потому что тебя не беспокоит, как именно происходит трансформация. Она происходит КАК-ТО, это не твоя забота, это забота компилятора. Если там написано мап - значит мап, и это всё что тебя должно беспокоить.
Исправление
stevejobs,
:
про названия идентификаторов частично согласен. Лучше было бы вообще сделать идентификаторы без названия. Мы же не обращаемся к промежуточным элементам, зачем нам их имена? Но джава так не умеет, приходится писать какое-нибудь говнецо в имя.
а вот про типы не согласен. Нам же неважно, что там будут за промежуточные типы, мы их нигде не используем, это просто какие-то переходные формы в трансформации
вот и пример скалы как «улучшенной джавы»
более полно:
scala> val helpers = Vector("adam", "kim", "melissa")
helpers: scala.collection.immutable.Vector[java.lang.String] =
Vector(adam, kim, melissa)
// the long form
scala> val caps = helpers.map(e => e.capitalize)
caps: scala.collection.immutable.Vector[String] = Vector(Adam, Kim, Melissa)
// the short form
scala> val caps = helpers.map(_.capitalize)
caps: scala.collection.immutable.Vector[String] = Vector(Adam, Kim, Melissa)
слева никаких типов, только val. У вектора никакого спецификатора типа. Компилятор сам выведет тип, если ему очень надо.
Из (e => e.capitalize) выбросили нафиг идентификатор e.
Всё работает, всё ок.
Т.е. код из топика можно было бы еще лучше записать, если бы Джава не заставляла тащить вместе с кодом мусор.
Исходная версия
stevejobs,
:
про названия идентификаторов частично согласен. Лучше было бы вообще сделать идентификаторы без названия. Мы же не обращаемся к промежуточным элементам, зачем нам их имена? Но джава так не умеет, приходится писать какое-нибудь говнецо в имя.
а вот про типы не согласен. Нам же неважно, что там будут за промежуточные типы, мы их нигде не используем, это просто какие-то переходные формы в трансформации
вот и пример скалы как «улучшенной джавы»
более полно:
scala> val helpers = Vector("adam", "kim", "melissa")
helpers: scala.collection.immutable.Vector[java.lang.String] =
Vector(adam, kim, melissa)
// the long form
scala> val caps = helpers.map(e => e.capitalize)
caps: scala.collection.immutable.Vector[String] = Vector(Adam, Kim, Melissa)
// the short form
scala> val caps = helpers.map(_.capitalize)
caps: scala.collection.immutable.Vector[String] = Vector(Adam, Kim, Melissa)
слева никаких типов, только val. У вектора никакого спецификатора типа. Компилятор сам выведет тип, если ему очень надо.
Из (e => e.capitalize) выбросили нафиг идентификатор e.
Всё работает, всё ок.