Skip to content

Commit a88bd54

Browse files
committed
Initial version of talk.
0 parents  commit a88bd54

25 files changed

+157
-0
lines changed

.gitignore

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
.idea/
2+
target/
3+
project/target/
4+
project/project/target/

build.sbt

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
name := "LearnScala"
2+
3+
version := "1.0"
4+
5+
scalaVersion := "2.11.6"
6+

project/build.properties

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
sbt.version = 0.13.8

project/plugins.sbt

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
logLevel := Level.Warn

src/main/scala/00.sc

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
object Александр_Подхалюзин {
2+
def email = "[email protected]"
3+
4+
def twitter = "Safela"
5+
}

src/main/scala/01.sc

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
"Scala" match {
2+
case "Модный и современный" => true
3+
case "Cтатически типизированный" => true
4+
case "Объектно ориентированный" => true
5+
case "Функциональный" => true
6+
case "Компилируется под JVM" => true
7+
}

src/main/scala/02.sc

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
Map.empty +
2+
(2001 -> "Первоначальный дизайн") +
3+
(2003 -> "Первая версия") ++
4+
(2004 to 2007).map(_ -> "Множество исследований") +
5+
(2008 -> "Появление в промышленном программировании") ++
6+
(2009 to 2014).map(_ -> "Быстро развился под современные нужды") +
7+
(2015 -> "Reactive platform")

src/main/scala/03.sc

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import helper._
2+
3+
"JVM languages"
4+
5+
("Scala" vs "Java") {
6+
"Более выразительный" +
7+
"Меньше кода даже по сравнению с Java 8"
8+
}
9+
10+
("Scala" vs "Groovy") {
11+
"Статически типизированный"
12+
}
13+
14+
("Scala" vs "Kotlin") {
15+
"Уже много промышленной разработки"
16+
}

src/main/scala/04.sc

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
//Hello, World!
2+
3+
object Main extends App {
4+
println("Hello, World!")
5+
}
6+
7+
Main.main(Array.empty)

src/main/scala/05.sc

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
//define method isPrime
2+
def isPrime(n: Int): Boolean = ???
3+
4+
//print all primes from 1 to 100

src/main/scala/06.sc

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
"В отличие от Java, в классах нету статики"
2+
class A {
3+
//todo: Конструктор?
4+
}
5+
6+
7+
"Статика отправляется в синглтон объекты"
8+
object B {
9+
//todo: Companion object?
10+
}
11+
12+
13+
"Аналог интерфейсов - trait"
14+
trait C {
15+
//todo: Конкретные методы?
16+
}

src/main/scala/07.sc

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
"Через trait реализуется множественное наследование"
2+
trait A {
3+
def foo: Int
4+
}
5+
trait B extends A {
6+
override def foo: Int = 1
7+
}
8+
trait C extends A {
9+
override def foo: Int = 2
10+
}
11+
12+
class D extends B with C
13+
14+
val d = new D
15+
16+
//todo: call foo

src/main/scala/08.sc

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// Algebraic data types in Scala
2+
"Две операции:"
3+
"A & B - объединение типов, или умножение"
4+
//todo: user example
5+
"A | B - Выбор из типов, или сложение"
6+
//todo: user/anonymous example
7+
8+
"List[A] = Nil | Cons(A, List[A])"
9+
//todo: list example

src/main/scala/09.sc

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
"Pattern matching"

src/main/scala/10.sc

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import helper._
2+
3+
В Scala нет полей!!!
4+
5+
"Все поля это свойства, для которых комплиятор созадает backing field"
6+
7+
class A {
8+
//todo: val/var
9+
}
10+
11+
class B(/*todo: val/var*/)
12+
13+
case class C() //todo: implicit val

src/main/scala/11.sc

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
"Generics in Scala"
2+
3+
"Scala generics" compareTo "Java generics"
4+
/** 1. В синтаксисе используем [] вместо <>.
5+
* 2. Нету raw types.
6+
* 3. Можно использовать примитивы.
7+
* 4. Можно накладывать ограничения сверху и снизу.
8+
* 5. Есть понятие вариантности.
9+
*/
10+
//todo: examples?

src/main/scala/12.sc

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
"Анонимные функции"
2+
3+
//Функциональный тип
4+
//todo:
5+
6+
//С типом параметра:
7+
//todo:
8+
9+
//Сокращения "_"
10+
//todo:

src/main/scala/13.sc

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
"Scala collections"

src/main/scala/14.sc

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
"if/while/do statements"
2+
//todo: break? flag + breakable

src/main/scala/15.sc

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
"Tail recursion"

src/main/scala/16.sc

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
"For expression"

src/main/scala/17.sc

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
"Implicit classes"

src/main/scala/18.sc

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
"Implicit parameters and type classes"

src/main/scala/19.jpg

173 KB
Loading

src/main/scala/helper.scala

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/**
2+
* @author Alefas
3+
* @since 31/03/15.
4+
*/
5+
object helper {
6+
implicit class StringActivity(s: String) {
7+
def vs(other: String)(body: => Unit) = new {
8+
def apply(x: Unit): Unit = {}
9+
}
10+
}
11+
12+
val нет: Any = null
13+
val !!! : Any = null
14+
object В {
15+
def Scala(o: Any) = new {def полей(x: Any): Unit = {}}
16+
}
17+
}

0 commit comments

Comments
 (0)