Статья:
Билл Веннерс, Мартин Одерски, Лекс Спун. Первые шаги в ScalaАвтор(ы): Билл Веннерс, Мартин Одерски, Лекс Спун
Дата: 30.07.2007
Scala – статически типизированный, объектно-ориентированный язык программирования, в котором смешиваются императивный и функциональный стили программирования. Одна из причин заинтересоваться программированием на Scala, состоит в том, что Scala позволяет увеличить производительность разработчика по сравнению с Java, сохраняя скорость исполнения JVM, существующие инвестиции в Java-код, знания и множество API, имеющихся для JVM. Scala обладает краткостью языков типа Ruby или Python, но при этом статически типизирована, как и Java.
Авторы:
VladD2
Kupaev
Аннотация:
Scala – статически типизированный, объектно-ориентированный язык программирования, в котором смешиваются императивный и функциональный стили программирования. Одна из причин заинтересоваться программированием на Scala, состоит в том, что Scala позволяет увеличить производительность разработчика по сравнению с Java, сохраняя скорость исполнения JVM, существующие инвестиции в Java-код, знания и множество API, имеющихся для JVM. Scala обладает краткостью языков типа Ruby или Python, но при этом статически типизирована, как и Java.
Здравствуйте, Купаев Михаил, Чистяков Влад (перевод), Вы писали:
КМЧ>Статья:
КМЧ>Билл Веннерс, Мартин Одерски, Лекс Спун. Первые шаги в ScalaАвтор(ы): Билл Веннерс, Мартин Одерски, Лекс Спун
Дата: 30.07.2007
Scala – статически типизированный, объектно-ориентированный язык программирования, в котором смешиваются императивный и функциональный стили программирования. Одна из причин заинтересоваться программированием на Scala, состоит в том, что Scala позволяет увеличить производительность разработчика по сравнению с Java, сохраняя скорость исполнения JVM, существующие инвестиции в Java-код, знания и множество API, имеющихся для JVM. Scala обладает краткостью языков типа Ruby или Python, но при этом статически типизирована, как и Java.
КМЧ>Авторы:
КМЧ> VladD2
КМЧ> Kupaev
КМЧ>...
Спасибо, интересно.
Единственный комментарий:
...
Тип результата здесь – scala.Unit, Scala-аналог void в Java. Главная разница между Unit в Scala и void в Java состоит в том, что Scala позволяет записать значение типа Unit, а именно (), а в Java нет значений типа void. (другими словами, как 1, 2 и 3 являются потенциальными значениями типа int в Scala и Java, так () является единственным значением типа Unit в Scala.) За этим исключением Unit и void эквивалентны. В частности, каждый возвращающий void метод в Java отображается на возвращающий Unit метод в Scala.
...
Выделенное утверждение не совсем соответствует действительности:
public class BBB {
public static void main(String[] args) throws Exception {
Constructor<Void> constructor = Void.class.getDeclaredConstructor();
constructor.setAccessible(true);
Void aVoid = constructor.newInstance();
System.out.println(aVoid);
}
}
Output:
java.lang.Void@757aef
Т.е. получить значение типа void все таки можно. Другой вопрос, что его можно получить только 'искусственным путем'.
Пример:
import java.lang.reflect.*;
public class BBB {
public static void main(String[] args) throws Exception {
Method method = BBB.class.getMethod("test");
System.out.println(method.invoke(BBB.class)); // prints null, not Void
}
public static void test() {
System.out.println("hello");
}
}
КМЧ>Статья:
КМЧ>Билл Веннерс, Мартин Одерски, Лекс Спун. Первые шаги в ScalaАвтор(ы): Билл Веннерс, Мартин Одерски, Лекс Спун
Дата: 30.07.2007
Scala – статически типизированный, объектно-ориентированный язык программирования, в котором смешиваются императивный и функциональный стили программирования. Одна из причин заинтересоваться программированием на Scala, состоит в том, что Scala позволяет увеличить производительность разработчика по сравнению с Java, сохраняя скорость исполнения JVM, существующие инвестиции в Java-код, знания и множество API, имеющихся для JVM. Scala обладает краткостью языков типа Ruby или Python, но при этом статически типизирована, как и Java.
Спасибо за статью.

До этого про Scala я знал только его название
Свои комментарии (Они скорее для авторов статьи чем для переводчиков):
1) цитата:
"Примеры этой статьи написаны для Scala 2.5.0-RC1, так что вам нужно скачать более свежую версию, чем 2.5.0-RC1"
— наверное точнее будет
"Примеры этой статьи написаны для Scala 2.5.0-RC1, так что вам нужно скачать 'Scala 2.5.0-RC1 или более свежую'"
2) в статье сильно сбивало с толку объяснение когда можно и когда не нужно ставить скобки, когда можно не ставить, но желательно все-таки поставить. И все в таком духе. Как мне кажется для "Первые шаги ..." это лишнее.
3) исходя из описания trait'ов я понял что их лучше сравнивать с абстрактными классами чем с интерфейсами. Как мне кажется на них они больше похожи
4) слово mixin вообще упоминается только в заголовке
Здравствуйте, denis.zhdanov, Вы писали:
DZ>DZ>java.lang.Void@757aef
DZ>Т.е. получить значение типа void все таки можно. Другой вопрос, что его можно получить только 'искусственным путем'.
Void это не void! Так же, как Integer это не int.
Здравствуйте, mkizub, Вы писали:
M>Void это не void! Так же, как Integer это не int.
rtfm?
The Void class is an uninstantiable placeholder class to hold a reference to the Class object representing the Java keyword void.
Здравствуйте, denis.zhdanov, Вы писали:
M>>Void это не void! Так же, как Integer это не int.
DZ>rtfm?
DZ>DZ>The Void class is an uninstantiable placeholder class to hold a reference to the Class object representing the Java keyword void.
Шо, проблемы с аглицким? Void — это placeholder класс, который содержит ссылку на тот класс, который представляет void.
Integer.TYPE — The Class instance representing the primitive type int
Void.TYPE — The Class object representing the pseudo-type corresponding to the keyword void.
И так-же, как Integer != int, так и Void != void, а Integer.TYPE == int.class, и Void.TYPE == void.class
Здравствуйте, alvas, Вы писали:
A>2) в статье сильно сбивало с толку объяснение когда можно и когда не нужно ставить скобки, когда можно не ставить, но желательно все-таки поставить. И все в таком духе. Как мне кажется для "Первые шаги ..." это лишнее.
Это замечание нужно адресовать автору. Но он, к сожалению, по русски не читает. Так что тут об этом говорить смысла нет.
A>3) исходя из описания trait'ов я понял что их лучше сравнивать с абстрактными классами чем с интерфейсами. Как мне кажется на них они больше похожи
Все же trait — это скорее расширенная версия интерфейсов. Точнее так. Trait-ы заменяют интерфейсы и предоставляют реализацию по умолчанию некоторых их методов. Главная особенноть trait-ов по сравнению с классами — это возможность наследовать класс сразу от нескольких trait-ов. Тут они полностью аналогичны интерфейсам.
A>4) слово mixin вообще упоминается только в заголовке
Опять же вопрос к автору. От себя скажу, что trait в данном случае == mixin.
... << RSDN@Home 1.2.0 alpha rev. 637>>