Список вещей от Java, с которым мы теперь счастливо простимся после Scala

Используйте SHOW INDEX как так:

SHOW INDEX FROM [tablename]

Документы: https://dev.mysql.com/doc/refman/5.0/en/show-index.html

5
задан user855 11 December 2009 в 04:20
поделиться

8 ответов

  • Null отсутствует (в основном) в Scala
  • Для выражений
  • Ковариантные и контравариантные обобщения на стороне определения
  • инфиксные операторы / методы ( a + b , карта списка f )
  • Сопоставление с образцом
  • неявное преобразование типов
  • статика исчезла (с объектом)
  • мощная поддержка пакетов (вложенные пакеты)

Но, как и каждая функция, они имеют свои последствия, это часть дизайна, когда использовать:

  • для выражения vs map / flatMap / filter / ...
  • сопоставления с образцом vs полиморфизма
  • инфиксного vs синтаксиса вызова метода

Когда использовать неявный тип преобразования и обобщения вообще.

Ничего не бесплатно. Scala - мощный инструмент, поэтому вы можете навредить себе.

6
ответ дан 18 December 2019 в 06:35
поделиться

Одна вещь, которая мне нравится, - это возможность что-то написать например:

case class Person(name: String, age: Int)

Вместо:

class Person {

  private String name;
  private int age;

  public Person(String name, int age) {
    this.name=name;
    this.age=age;
  }

  public String getName() {
      return name;
  }

  public int getAge{
      return age;
  }

  public String toString() { 
      return String.format("Person(%s, %d)", name, age);
  }

  public boolean equals(Object other) {
      if (other == this) 
          return true;
      if (other.getClass() != getClass())
          return false;
      Person p = (Person) other;
      return getName().equals(p.getName()) && getAge().equals(p.getAge());
  }

  public int hashCode() {
      int h = getName().hashCode();
      h = 37 * h + getAge(); //or whatever it is!
      return h;
  }
}
8
ответ дан 18 December 2019 в 06:35
поделиться

Я думаю, что двумя основными особенностями Scala являются:

  • Статический вывод типа - эта замечательная языковая функция действительно позволяет сделать ваш код короче, но обязательно быстрее.
  • Аннотации отклонений, т.е. невариантность (по умолчанию в scala и java), ковариация и контравариантность - еще одна функция, которая позволяет вам связывать типы в вашем приложении без написания слишком большого количества кода.

Однако одна вещь, которая мне не слишком нравится наличие неявных преобразований (они похожи на неявное преобразование C ++), что звучит как быстрый взлом, например, клейкая лента

На ваше рассмотрение

4
ответ дан 18 December 2019 в 06:35
поделиться

В Scala есть мощная концепция множественного наследования: черты ! Это очень важно для того, чтобы приблизиться к наследованию реализации Эйфеля . Он также имеет некоторое сходство с примесными модулями Ruby .

4
ответ дан 18 December 2019 в 06:35
поделиться

Я с нетерпением жду возможности появления в 2.8 дополнительных именованных параметров. Они упростят создание самодокументируемого кода для неизменяемых объектов, поскольку вы можете использовать имена параметров при вызове конструктора.

Кроме того, возможности копирования в классах case в 2.8 упростят реализацию объектов «копирование при изменении» во многом подобно неизменяемым коллекциям, уже имеющимся в Scala.

0
ответ дан 18 December 2019 в 06:35
поделиться

Здесь мы работаем над Scala 2.8, поэтому некоторые из них еще не полностью выпущены ...

Scala особенно помогает при удалении шаблонов:

  • Выведение типов
  • Traits / Mixins
  • Единый принцип доступа - больше нет геттеров и сеттеров
  • Перегрузка операторов

и добавление функциональных конструкций для дальнейшего уменьшения размера вашей программы:

  • Первоклассные функции - Да, это означает закрытие :)
  • Ибо-понимания. Это НЕ циклы, а гораздо более мощный зверь.
  • match / case блоки - сопоставление с образцом, гораздо более мощное, чем switch / case

Это также прекрасно работает с некоторыми недостатками дизайна в Java

  • Manifest class для повторного сбора информации, потерянной при стирании
  • Синглтоны - гораздо более объектно-ориентированные, чем статические методы в классе
  • Разница между объявлением и сайтом - Больше не нужно
2
ответ дан 18 December 2019 в 06:35
поделиться

I like the fact that functions are now Objects, and that primitives are wrapped by default. The ability of the compiler to intelligently infer type is also nice.

0
ответ дан 18 December 2019 в 06:35
поделиться

Я не согласен с некоторыми предположениями по этому вопросу.

Scala работает на JVM , поэтому поддержка параллелизма (на уровне ВМ) не может быть лучше, чем Java. Имейте в виду, акторы могут быть лучшей моделью, чем потоки Java , но я был бы удивлен, если бы акторы не могли быть реализованы на Java.

Кроме того, в Java есть Регулярные выражения .

0
ответ дан 18 December 2019 в 06:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: