- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
object Point2D {
type Point2D = Object {def apply(method: Method): method.type#signature}
trait Method {
type signature
}
object ToString extends Method {
override type signature = () => String
}
object GetX extends Method {
override type signature = () => Int
}
object SetX extends Method {
override type signature = (Int) => Point2D
}
def Point2D(x: Int, y: Int): Point2D = {
class Dispatch {
def apply(method: Method): method.signature = (method match {
case ToString => () => s"($x, $y)"
case GetX => () => x
case SetX => (x: Int) => Point2D(x, y)
}).asInstanceOf[method.signature]
}
new Dispatch
}
}
LispGovno 10.12.2013 23:18 # 0
wvxvw 11.12.2013 00:26 # +2
Не знаю зачем это было писать (т.как в этом контексте никакого практического применения этому нет). Но, возможно, это пример того как можно через жопу задать тип наперед, исходя из того, какие именно поля будут в классе.
LispGovno 11.12.2013 00:32 # 0
Чувак спрашивал как это написать на крестах. Этот факт многое объясняет.
А ещё сказал что это популярный паттерн dependend method types.
wvxvw 11.12.2013 01:09 # 0
LispGovno 10.12.2013 23:30 # 0
LispGovno 11.12.2013 00:19 # +1
Классы скалы не умеют в статические методы, поэтому вставили костыль: приходится заводить объект спутник класса (компаньон), который как-будто бы умеет (вместо имени класса подставляется объект-спутник).
А ещё скала не умеет в несколько конструкторов, поэтому опять вставили костыль в виде объекта-компаньона.
Обожаю продуманные с рождения языки. В общем парни я разобрался.
defecate-plusplus 11.12.2013 00:57 # +6
LispGovno 11.12.2013 00:58 # +2
defecate-plusplus 11.12.2013 01:05 # +4
чего ты вдруг в скалу решил замараться? жизнь потеряла былой огонёк?
LispGovno 12.12.2013 20:57 # +1
bormand 12.12.2013 21:01 # +2
J
roman-kashitsyn 12.12.2013 21:04 # +4
LispGovno 12.12.2013 21:14 # +1
Lure Of Chaos 10.12.2013 23:30 # +2
wvxvw 11.12.2013 00:19 # +1
LispGovno 11.12.2013 00:22 # 0
はい
anonimb84a2f6fd141 12.12.2013 20:45 # −1
LispGovno 12.12.2013 20:47 # 0
bormand 12.12.2013 20:52 # +2
> いいえ
Уроки японского на говнокоде?
LispGovno 12.12.2013 20:55 # 0
bormand 12.12.2013 21:05 # +2
P.S. Блин, киберсквоттеры жгут - скупили домены govno.ru, govno.com, и govno.net.
roman-kashitsyn 12.12.2013 21:08 # +1
bormand 12.12.2013 21:16 # +1
LispGovno 12.12.2013 21:19 # 0
bormand 12.12.2013 21:22 # +1
LispGovno 12.12.2013 21:27 # +1