際際滷

際際滷Share a Scribd company logo
Scala magic

仍亠从舒仆亟 仂亟舒仍ミ経湖

    19 仄舒 2012 亞.




                       1 / 19
Syntactic sugar
For
comprehensions
By-name
parameters
Non local return
Local functions
Lazy values
Generated
ByteCode
Binary
                   Syntactic sugar
compatibility

Questions?




                                     2 / 19
For comprehensions

Syntactic sugar
For
                    Scala for 磦仍磳 亳仆舒从亳亠从亳仄 舒舒仂仄, 亠仄 仆亠
comprehensions
By-name
                   仄亠仆亠亠 仗舒于亳仍舒 仗亠仂弍舒亰仂于舒仆亳 亟仂于仂仍仆仂 仍仂亢仆
parameters
Non local return        亟亳仆 亞亠仆亠舒仂  yield 仂亢亠, 仂 于亰仂于 仄亠仂亟舒 map
Local functions
Lazy values             亟亳仆 亞亠仆亠舒仂 弍亠亰 yield 仂亢亠, 仂 foreach
Generated               亠从仂仍从仂 亞亠仆亠舒仂仂于 舒仆仍亳ム 于仂 flatMap
ByteCode
Binary
compatibility

Questions?          f o r ( i < 1 t o    5)       (1 to 5) . map { i = i    > i }
                        yield i       i            (1 to 5) . f o r e a c h {
                    f o r ( i < 1 t o
                        println ( i )
                                          5)   油   }
                                                     i = println ( i )
                                                        >

                    f o r { i < 1 t o    5        (1 to 5) . f l a t M a p {
                            j < 1 t o    5}         i = (1 to 5) . map { j = i + j }
                                                        >                       >
                        yield i + j                }


                   仂亟仂弍仆亠亠 仄仂亢仆仂 仗仂亳舒 于 仗亠亳亳从舒亳亳.



                                                                                        3 / 19
By-name parameters

Syntactic sugar
For
                   仂亰仄仂亢仆仂 于 于亰仂于 仄亠仂亟舒 仗亠亠亟舒于舒 于舒亢亠仆亳
comprehensions
By-name
                   仍亠仆亳于仂 仂 亟亞仂亶 仗亳仄亠 仂亞仂, 亞亟亠 仆亠磦仆仂 仄仂亞 弍
parameters
Non local return
                   亰舒亳 closures. 弌仍亠亟ム亳亠 亟于舒 仗亳仄亠舒 亳亟亠仆亳仆:
Local functions
Lazy values
                    d e f foo ( x : => Int ) {   d e f foo ( x : ( ) => Int ) {
Generated
ByteCode               println ( x )                println ( x ( ) )
                    }                            }
Binary
compatibility
                    foo ( 1 )                    foo ( ( ) => 1 )
Questions?

                   丼仂 亳亰亠亟从舒 仄仂亢亠 仗亳于仂亟亳 从 仂亳弍从亠 (仗舒舒仄亠 弍亟亠
                   于亳仍 从舒亢亟亶 舒亰, 从仂亞亟舒 从 仆亠仄 弍亟亠
                   仗仂亳亰于仂亟亳 仂弍舒亠仆亳亠).




                                                                                  4 / 19
Non local return

Syntactic sugar
For
                   Return statement 于仆亳 closure 仆舒 亟亠仍亠 从仂仄仗亳仍亳亠 于
comprehensions
By-name
                   从仂亟, 从仂仂亶 弍仂舒亠 NonLocalReturnControl. 
parameters
Non local return
                   弍仂仍亳仆于亠 仍舒亠于 仂 亟仂弍仆仂, 仆仂 仆亢仆仂 亳于舒
Local functions    仍亠亟ム亠亠
Lazy values
Generated              从亳亳仆 仗仂 仗仂亳亰于仂亟亳亠仍仆仂亳 从从舒 从仂亟舒 仂
ByteCode
Binary
                      exception 仍亠亟亠 亳亰弍亠亞舒
compatibility
                      亠仍亰 仍仂于亳 Throwable 于 仂仄 仄亠亠, 亞亟亠 仂
Questions?
                      exception 弍仂舒亠
                       亳仍 亳仆舒从亳亠从仂亞仂 舒舒舒 仂仗亳舒仆仆仂亞仂 舒仆亠亠, 于亠
                      仂 仄仂亢亠 仗仂亳仂亟亳 仆亠磦仆仂 (for-comprehensions 亳
                      by-name parameters)




                                                                        5 / 19
Local functions

Syntactic sugar
For
                    Java 仍ミ頴笑 于仗仂仄仂亞舒亠仍仆亶 从仂亟 仂仂仄仍磳 于 于亳亟亠
comprehensions
By-name
                   private 仄亠仂亟仂于 仆舒 仂于仆亠 从仍舒舒.  Scala 仂 仄仂亢仆仂
parameters
Non local return
                   亟亠仍舒 弍仂仍亠亠 从亳仂于舒仆仆仄, 亠仍亳 亳仗仂仍亰仂于舒
Local functions    仍仂从舒仍仆亠 仄亠仂亟, 仂 仆舒 仂于仆亠 bytecode 仗仂仍舒亠
Lazy values
Generated
                   仗亳仄亠仆仂 仂亢亠 舒仄仂亠:
ByteCode
Binary
compatibility                                    import scala . runtime . IntRef ;
                                                 public class LocalFunctions {
Questions?          class LocalFunctions {
                                                     p u b l i c void foo () {
                      def foo {
                                                             I n t R e f i $ 1 = new I n t R e f ( 1 ) ;
                        var i = 1
                                                             i n t j$1 = 2;
                        val j = 2
                                                             l o c a l $ 1 ( i$1 , j$1 ) ;
                        def local {
                          i += j
                                             油               l o c a l $ 1 ( i$1 , j$1 ) ;
                                                     }
                        }
                                                     p r i v a t e f i n a l void local$1 (
                        local
                                                         IntRef intref , i n t i ) {
                        local
                                                             i n t r e f . e l e m += i ;
                      }
                                                     }
                    }
                                                     p u b l i c L o c a l F u n c t i o n s ( ) {}
                                                 }




                                                                                                       6 / 19
Lazy values

Syntactic sugar
For
                   亅仂 仂亢亠 亳仆舒从亳亠从亳亶 舒舒, 从仂仂亶 仆舒亟仂
comprehensions
By-name
                   亳仗仂仍亰仂于舒 舒从从舒仆仂 (舒从 从舒从 于仂亰仄仂亢仆 deadlock 亳
parameters
Non local return
                   仗仂弍仍亠仄 仗仂亳亰于仂亟亳亠仍仆仂亳). 亠亰舒于亳亳仄仂 仂
Local functions    舒仗仂仍仂亢亠仆亳 lazy val, 从仂仄仗亳仍亳亠 仂仆 舒从亳仄 仂弍舒亰仂仄
Lazy values
Generated
ByteCode
                                             import scala . runtime . BoxedUnit ;
Binary                                       p u b l i c c l a s s Lazy {
compatibility                                   public int x () {
                                                     i f ( ( b i t m a p $ 0 & 2 ) == 0 )
Questions?                                              synchronized ( this ) {
                                                           i f ( ( b i t m a p $ 0 & 2 ) == 0 ) {
                                                               x = 1;
                                                               bitmap$0 = bitmap$0 | 2;
                    c l a s s Lazy {
                        lazy val x = 1
                                         油                 }
                                                           BoxedUnit _tmp =
                    }
                                                               BoxedUnit . UNIT ;
                                                        }
                                                        return x ;
                                                    }
                                                p u b l i c L a z y ( ) {}
                                                private int x ;
                                                public v o l a t i l e i n t bitmap$0 ;
                                             }



                                                                                                    7 / 19
Syntactic sugar
Generated
ByteCode
Classes and names
Objects
Traits
Trait subclasses
Linearization
Initialisation order
Binary
                       Generated ByteCode
compatibility

Questions?




                                            8 / 19
Classes and names

Syntactic sugar
                       仍 从仍舒仂于 仆亳亠亞仂 仄舒亞亳亠从仂亞仂 仆亠 仗仂亳仂亟亳.
Generated
ByteCode               舒从 仗亠仂弍舒亰ム 亳仄亠仆舒. 仍 弍仂仍亳仆于舒 亳仄于仂仍仂于
Classes and names
Objects                亠 亠亞仂 亠从仂于亶 从于亳于舒仍亠仆
Traits
Trait subclasses          : 油 $colon
Linearization
Initialisation order
                          + 油 $plus
Binary                    息 油 $u00A9
compatibility

Questions?             仆亳 Scala 从仂亟舒 仄仂亢仆仂 亳仗仂仍亰仂于舒 仂弍舒 于舒亳舒仆舒
                       仗仂亟仂弍仆 亳亟亠仆亳亳从舒仂仂于
                       仂亟仂弍仆亠亠 仄仂亢仆仂 亳亰亳 仗亠仂弍舒亰仂于舒仆亳  仗仂仄仂
                       仄亠仂亟仂于 NameTransfomer.encode/decode 亳亰
                       scala-compiler.jar.




                                                                           9 / 19
Objects

Syntactic sugar
                       弍亠从 于亠亞亟舒 从仂仄仗亳仍亳亠 于 亟于舒 从仍舒舒.
Generated
ByteCode
Classes and names
                          Object$ 仂亟亠亢亳 于 亠弍亠 舒亳亠从仂亠 仗仂仍亠 MODULE$,
Objects                   舒 舒从亢亠 从仂亟 于亠 仄亠仂亟仂于
Traits
Trait subclasses          Object 仂亟亠亢亳 于 亠弍亠 于亠 舒亳亠从亳亠 仄亠仂亟
Linearization
Initialisation order      仂弍亠从舒,  亠仍仂仄 于亳亟舒 Object$.MODULE$.foo()
Binary
compatibility          舒亢仆仂 仗仂仆亳仄舒, 仂 舒亳亠从亳亠 仄亠仂亟 亟仂弍舒于仍亠仆 亟仍
Questions?             亟仂弍于舒 于亰仂于舒 亳亰 Java. 丐亠仄 仆亠 仄亠仆亠亠 仂仆亳 亟仂弍舒于仍ム
                       仆亠 于亠亞亟舒.
                           Companion Trait 仆亠 亟仂弍舒于仍磳 仆亳亠亞仂.
                           Companion Class 仆亠 亟仂弍舒于仍ム 仄亠仂亟  舒从亳仄
                          亳仄亠仆亠仄, 从仂仂仂亠 亢亠 亠 于 仂仄 从仍舒亠
                          亠仂亟 从仍舒舒 java.lang.Object


                                                                         10 / 19
Traits

Syntactic sugar
                       仍亳 trait 仂仍亳舒亠 仂 仂弍仆仂亞仂 亳仆亠亠亶舒 于 Java
Generated
ByteCode               仆舒仍亳亳亠仄 从仂仆从亠仆 仄亠仂亟仂于, 仂 从 仂仂于亠于ム亠仄
Classes and names
Objects                亳仆亠亠亶 弍亟亠 仂亰亟舒仆 从仍舒 Trait$class 
Traits
Trait subclasses
                       亳仄仗仍亠仄亠仆舒亳亠亶 亳 仄亠仂亟仂于.
Linearization
Initialisation order
Binary                                                      public abstract class   A$class {
compatibility                                                   public static int   foo ( A $this ,
                                                                                          int x) {
Questions?                                                          return   2;
                        trait A {
                                                                }
                          val x = 1                     油       public s t a t i c void $init$ (
                                                                  A $this
                            def foo ( x :   Int ) = 2
                                                                ) {
                        }
                                                                    $this .
                                                                      test$A$_setter_$x_$eq (1) ;
                                                                }
                                                            }




                                                                                                      11 / 19
Trait subclasses

Syntactic sugar
                       仍亳 于 Java 仗仂仗舒 亠舒仍亳亰仂于舒 Trait, 于 从仂仂仂仄 亠
Generated
ByteCode               亢亠 亳仄仗仍亠仄亠仆亳仂于舒仆亠 仄亠仂亟, 仂 亳 于亠 舒于仆仂
Classes and names
Objects                仗亳仍仂 弍 亠舒仍亳亰仂于于舒. 亞仂亶 于仂仗仂, 仂 仂
Traits
Trait subclasses
                       仄仂亢仆仂 亟亠仍舒 仗亠亟亠仍仆仂 仍亠亞从仂:
Linearization
Initialisation order
Binary                 i n t foo ( ) { r e t u r n Trait$class . foo ( t h i s ) ; }
compatibility

Questions?
                        仍舒亠 仆舒仍亠亟仆亳从仂于 仆舒仗亳舒仆仆 仆舒 Scala, 仂 亢亠 舒仄仂亠
                       亟亠仍舒亠 从仂仄仗亳仍仂.




                                                                                       12 / 19
Linearization

Syntactic sugar
                       亅仂 舒仍亞仂亳仄 亠弍亠 从仂仄仗亳仍仂, 仂弍 仂仗亠亟亠仍亳,
Generated
ByteCode               于 从舒从仂仄 仗仂磲从亠 仆舒亟仂 亳从舒 仄亠仂亟 于 弍舒亰仂于 从仍舒舒.
Classes and names
Objects
Traits
Trait subclasses       trait   A extends B
Linearization          trait   B
Initialisation order   class   C extends B
Binary                 class   D extends C with A
compatibility

Questions?
                       亟亠 仗仂磲仂从 D, A, C, B.
                       仍亳 亟于舒 仄亠仂亟舒  仂亟亳仆舒从仂于仂亶 亳亞仆舒仂亶 弍亠亰
                       仄仂亟亳亳从舒仂舒 override 仗亳仂亟 于 从仍舒 仆舒仍亠亟仆亳从 亳亰
                       仗亠亠亶仂于, 仂 仂亳弍从亳 仆亠 弍亟亠, 舒从 从舒从 仂弍磶舒亠仍仆仂
                       仆舒亟仂 弍亟亠 仗亠亠仂仗亠亟亠仍亳  亳亞仆舒. 仍亳 亢亠 
                       从仂亞仂-仂 亠 仄仂亟亳亳从舒仂 override, 仄仂亢亠 仍亳
                       仆亠磦仆亶 override 仂亞仍舒仆仂 仗舒于亳仍舒仄 仍亳仆亠舒亳亰舒亳亳.

                                                                           13 / 19
Initialisation order

Syntactic sugar
                       仆亳亳舒仍亳亰舒亳 仗仂亳仂亟亳 于 仗仂磲从亠, 仂弍舒仆仂仄
Generated
ByteCode               仍亳仆亠舒亳亰舒亳亳. 仍亳 从 仗亠亠仄亠仆仆仂亶 仂弍舒亳 亟仂 仂亞仂, 从舒从
Classes and names
Objects                仂仆舒 仗仂亳仆亳亳舒仍亳亰亳仂于舒仆舒, 仄仂亢仆仂 仗仂仍亳 NPE.
Traits
Trait subclasses
                        亟于舒 仗仂仂弍舒 亳亰弍舒于亳 仂 仗仂亟仂弍仆 仗仂弍仍亠仄:
Linearization
Initialisation order      仗仂仍亰仂于舒 lazy val
Binary
compatibility
                          仗仂仍亰仂于舒 early definitions
Questions?




                                                                          14 / 19
Syntactic sugar
Generated
ByteCode
Binary
compatibility
Methods
Values
Lazy values

Questions?        Binary compatibility




                                         15 / 19
Methods

Syntactic sugar
                  亟亠 于亠 仂亠仆 仗仂仂亢亠 仆舒 Java. 丼舒亠 于亠亞仂 仗仂弍仍亠仄 仆亠
Generated
ByteCode          弍亟亠.
Binary
compatibility        仂弍舒于仍 仄亠仂亟 仄仂亢仆仂 亟舒亢亠 于 Trait, 仆仂 仂仍从仂 亠仍亳
Methods
Values               舒亠 仄亠仂亟 仆亠 仍舒ム 仆舒 仆仂于亠, 舒从 从舒从
Lazy values
                     亳仄仗仍亠仄亠仆舒亳亳 于 从仍舒 仆舒仍亠亟仆亳从亳 亟仂弍舒于仍亠仆 仆亠
Questions?
                     弍亟.
                      从仍舒 仂仗舒仆仂 亟仂弍舒于仍 仄亠仂亟, 亳仄亠仆舒 从仂仂
                     仂于仗舒亟舒ム  亳仄亠仆亠仄 仄亠仂亟仂于 亳亰 Companion Object, 舒从
                     从舒从 舒亳亠从亳亠 亠舒仍亳亰舒亳亳 弍亟 亟舒仍亠仆
                     从仂仄仗亳仍仂仂仄, 仂 仄仂亢亠 于亰于舒 仗仂弍仍亠仄  从仂亟仂仄
                     仆舒仗亳舒仆仆仄 仆亠 仆舒 Scala.




                                                                     16 / 19
Values

Syntactic sugar
                  仍亳 仗亠亠仄亠仆仆舒 仆舒仂亟亳 于 从仍舒亠 亳仍亳 仂弍亠从亠, 仂
Generated
ByteCode          仗亠亠仄亠仆仆舒 从仂仄仗亳仍亳亠 于 getter, setter (亟仍 variables) 亳
Binary
compatibility
                  field, 从仂仂亶 亳仆亳舒仍亳亰亳亠 于 从仂仆从仂亠 从仍舒舒. 
Methods           亰仆舒亳 于亠 弍亟亠 舒从亢亠 仂仂仂 从舒从 亳  仄亠仂亟舒仄亳.
Values
Lazy values       仍亳 仗亠亠仄亠仆仆舒 仆舒仂亟亳 于 Trait, 仂 仂仆舒 从仂仄仗亳仍亳亠
Questions?        于 getter 亳 setter (于亠亞亟舒). 仆亳亳舒仍亳亰舒亳 仗仂亳仂亟亳 于
                  仄亠仂亟亠 Trait$class.$init$ 亠亠亰 于亰仂于 setter.
                      仆舒亳 亟仂弍舒于仍 仗亠亠仄亠仆仆 于 亠亶 仆亠仍亰. 丐舒从 从舒从
                      弍亟亠 于亰于舒仆 舒弍舒从仆亶 setter.
                      仂 舒仆舒仍仂亞亳仆仄 仗亳亳仆舒仄 仆亠仍亰 亳亰仄亠仆 def 仆舒 val
                      丐亠仄 仆亠 仄亠仆亠亠 val 仆舒 def 舒从亢亠 亳亰仄亠仆 仆亠仍亰, 舒从 从舒从
                      仂亞亟舒 于 从仍舒舒 仆舒仍亠亟仆亳从舒, 亞亟亠 从舒从 舒亰 亳 舒仆亳
                      field, 仗亠亠仄亠仆仆舒 仆亠 弍亟亠 仗仂亳仆亳亳舒仍亳亰亳仂于舒仆舒.


                                                                         17 / 19
Lazy values

Syntactic sugar
                   仗仂亟从仍舒舒 仆亠 亞亠仆亠亳亠 field bitmap, 亠仍亳 仂仆 亠 于
Generated
ByteCode          弍舒亰仂于仂仄 从仍舒亠.
Binary
compatibility         仂仂仄 于 亳 仍舒 亟仂弍舒于仍 lazy value 于 从仍舒
Methods
Values                仆亠仍亰
Lazy values
                       Trait 亟仂弍舒于仍 仄仂亢仆仂, 亠仍亳 舒 仗亠亠仄亠仆仆舒 仆亠
Questions?
                      弍亟亠 亳仗仂仍亰仂于舒仆舒 于 舒仂仄 从仂亟亠
                      丐舒从 从舒从 从仂仄仗亳仍亳 lazy val 于 Trait 仂 从仂仄仗亳仍亳亳
                      仄亠仂亟舒 仆亠 仂仍亳舒亠 仂于亠仄, 仂 亳 仄仂亢仆仂 亰舒仄亠仆
                      亟亞 仆舒 亟亞舒, 亳于舒 仂仍从仂, 仂 于 仆舒仍亠亟仆亳从舒
                      仗仂亟仂弍仆舒 亠仄舒仆亳从舒 仆亠 亳亰仄亠仆亳




                                                                        18 / 19
Syntactic sugar
Generated
ByteCode
Binary
compatibility

Questions?



                  Questions?




                               19 / 19

More Related Content

What's hot (20)

丕仂从 1. 丼仂 舒从仂亠 仆从亳仂仆舒仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠
丕仂从 1. 丼仂 舒从仂亠 仆从亳仂仆舒仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠丕仂从 1. 丼仂 舒从仂亠 仆从亳仂仆舒仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠
丕仂从 1. 丼仂 舒从仂亠 仆从亳仂仆舒仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠
弌亳亠仄舒 亟亳舒仆亳仂仆仆仂亞仂 仂弍亠仆亳 MyDLS
丐亠仂亳亳 亳 仗舒从亳从亳 仆亳仂仆舒仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳 - GDG D2D
丐亠仂亳亳 亳 仗舒从亳从亳 仆亳仂仆舒仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳 - GDG D2D丐亠仂亳亳 亳 仗舒从亳从亳 仆亳仂仆舒仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳 - GDG D2D
丐亠仂亳亳 亳 仗舒从亳从亳 仆亳仂仆舒仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳 - GDG D2D
0xffAA
丐亠仂亳亳 亳 仗舒从亳从亳 仆从亳仂仆舒仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳.
丐亠仂亳亳 亳 仗舒从亳从亳 仆从亳仂仆舒仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳.丐亠仂亳亳 亳 仗舒从亳从亳 仆从亳仂仆舒仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳.
丐亠仂亳亳 亳 仗舒从亳从亳 仆从亳仂仆舒仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳.
Dev2Dev
丱舒舒从亠仆亠 亠 仆从亳仂仆舒仍仆 磶从仂于 仗仂亞舒仄仄亳仂于舒仆亳
丱舒舒从亠仆亠 亠 仆从亳仂仆舒仍仆 磶从仂于 仗仂亞舒仄仄亳仂于舒仆亳丱舒舒从亠仆亠 亠 仆从亳仂仆舒仍仆 磶从仂于 仗仂亞舒仄仄亳仂于舒仆亳
丱舒舒从亠仆亠 亠 仆从亳仂仆舒仍仆 磶从仂于 仗仂亞舒仄仄亳仂于舒仆亳
Alex.Kolonitsky
仆从舒仗仍亳 亳 仗仂仍亳仄仂亳亰仄 于 ruby
仆从舒仗仍亳 亳 仗仂仍亳仄仂亳亰仄 于 ruby仆从舒仗仍亳 亳 仗仂仍亳仄仂亳亰仄 于 ruby
仆从舒仗仍亳 亳 仗仂仍亳仄仂亳亰仄 于 ruby
Evgeny Smirnov
Ruby 舒亠仆 仗仂亞舒仄仄亳仂于舒仆亳
Ruby  舒亠仆 仗仂亞舒仄仄亳仂于舒仆亳Ruby  舒亠仆 仗仂亞舒仄仄亳仂于舒仆亳
Ruby 舒亠仆 仗仂亞舒仄仄亳仂于舒仆亳
Evgeny Smirnov
777
777777
777
ssusera868ff
亳仆舒仄亳亠从仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 ruby
亳仆舒仄亳亠从仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 ruby亳仆舒仄亳亠从仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 ruby
亳仆舒仄亳亠从仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 ruby
Evgeny Smirnov
C++ 舒亰仂于亶. 舒仆亳亠 02.
C++ 舒亰仂于亶. 舒仆亳亠 02.C++ 舒亰仂于亶. 舒仆亳亠 02.
C++ 舒亰仂于亶. 舒仆亳亠 02.
Igor Shkulipa
仍亞仂亳仄 仆舒 ruby: 亢舒亟仆亠 舒仍亞仂亳仄
仍亞仂亳仄 仆舒 ruby: 亢舒亟仆亠 舒仍亞仂亳仄仍亞仂亳仄 仆舒 ruby: 亢舒亟仆亠 舒仍亞仂亳仄
仍亞仂亳仄 仆舒 ruby: 亢舒亟仆亠 舒仍亞仂亳仄
Evgeny Smirnov
弍舒弍仂从舒 从仂仍仍亠从亳亶 仆舒亳亰仆舒仆从: 从舒从 仗亳仄亠仆亳 仄仆仂亞仂 仆从亳亶 从 仂亟仆仂仄 舒亞仄亠仆...
弍舒弍仂从舒 从仂仍仍亠从亳亶 仆舒亳亰仆舒仆从: 从舒从 仗亳仄亠仆亳 仄仆仂亞仂 仆从亳亶 从 仂亟仆仂仄 舒亞仄亠仆...弍舒弍仂从舒 从仂仍仍亠从亳亶 仆舒亳亰仆舒仆从: 从舒从 仗亳仄亠仆亳 仄仆仂亞仂 仆从亳亶 从 仂亟仆仂仄 舒亞仄亠仆...
弍舒弍仂从舒 从仂仍仍亠从亳亶 仆舒亳亰仆舒仆从: 从舒从 仗亳仄亠仆亳 仄仆仂亞仂 仆从亳亶 从 仂亟仆仂仄 舒亞仄亠仆...
corehard_by
Ruby: 舒弍仂舒 仄舒亳于舒仄亳
Ruby: 舒弍仂舒  仄舒亳于舒仄亳Ruby: 舒弍仂舒  仄舒亳于舒仄亳
Ruby: 舒弍仂舒 仄舒亳于舒仄亳
Evgeny Smirnov
舒亟舒亳 仗仂 于 ruby
舒亟舒亳 仗仂  于 ruby舒亟舒亳 仗仂  于 ruby
舒亟舒亳 仗仂 于 ruby
Evgeny Smirnov
舒仗亳 于仗仂仄仂亞舒亠仍仆亶 舒仍亞仂亳仄仂于 仆舒 磶从舒 舒从舒仍
舒仗亳 于仗仂仄仂亞舒亠仍仆亶 舒仍亞仂亳仄仂于 仆舒 磶从舒 舒从舒仍舒仗亳 于仗仂仄仂亞舒亠仍仆亶 舒仍亞仂亳仄仂于 仆舒 磶从舒 舒从舒仍
舒仗亳 于仗仂仄仂亞舒亠仍仆亶 舒仍亞仂亳仄仂于 仆舒 磶从舒 舒从舒仍
Andrey Dolinin
Cpp/cli types
Cpp/cli typesCpp/cli types
Cpp/cli types
mcroitor
亠仆磻仂于舒 亞.于.
亠仆磻仂于舒 亞.于.亠仆磻仂于舒 亞.于.
亠仆磻仂于舒 亞.于.
sharikdp
弍亳亠 于亠亟亠仆亳 仂 磶从亠 仗仂亞舒仄仄亳仂于舒仆亳 舒从舒仍
弍亳亠 于亠亟亠仆亳 仂 磶从亠 仗仂亞舒仄仄亳仂于舒仆亳 舒从舒仍弍亳亠 于亠亟亠仆亳 仂 磶从亠 仗仂亞舒仄仄亳仂于舒仆亳 舒从舒仍
弍亳亠 于亠亟亠仆亳 仂 磶从亠 仗仂亞舒仄仄亳仂于舒仆亳 舒从舒仍
Andrey Dolinin
弌仗仂仂弍 亰舒仗亳亳 舒仍亞仂亳仄仂于
弌仗仂仂弍 亰舒仗亳亳 舒仍亞仂亳仄仂于弌仗仂仂弍 亰舒仗亳亳 舒仍亞仂亳仄仂于
弌仗仂仂弍 亰舒仗亳亳 舒仍亞仂亳仄仂于
Andrey Dolinin
C++ 舒亰仂于亶. 舒仆亳亠 03.
C++ 舒亰仂于亶. 舒仆亳亠 03.C++ 舒亰仂于亶. 舒仆亳亠 03.
C++ 舒亰仂于亶. 舒仆亳亠 03.
Igor Shkulipa
丐亠仂亳亳 亳 仗舒从亳从亳 仆亳仂仆舒仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳 - GDG D2D
丐亠仂亳亳 亳 仗舒从亳从亳 仆亳仂仆舒仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳 - GDG D2D丐亠仂亳亳 亳 仗舒从亳从亳 仆亳仂仆舒仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳 - GDG D2D
丐亠仂亳亳 亳 仗舒从亳从亳 仆亳仂仆舒仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳 - GDG D2D
0xffAA
丐亠仂亳亳 亳 仗舒从亳从亳 仆从亳仂仆舒仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳.
丐亠仂亳亳 亳 仗舒从亳从亳 仆从亳仂仆舒仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳.丐亠仂亳亳 亳 仗舒从亳从亳 仆从亳仂仆舒仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳.
丐亠仂亳亳 亳 仗舒从亳从亳 仆从亳仂仆舒仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳.
Dev2Dev
丱舒舒从亠仆亠 亠 仆从亳仂仆舒仍仆 磶从仂于 仗仂亞舒仄仄亳仂于舒仆亳
丱舒舒从亠仆亠 亠 仆从亳仂仆舒仍仆 磶从仂于 仗仂亞舒仄仄亳仂于舒仆亳丱舒舒从亠仆亠 亠 仆从亳仂仆舒仍仆 磶从仂于 仗仂亞舒仄仄亳仂于舒仆亳
丱舒舒从亠仆亠 亠 仆从亳仂仆舒仍仆 磶从仂于 仗仂亞舒仄仄亳仂于舒仆亳
Alex.Kolonitsky
仆从舒仗仍亳 亳 仗仂仍亳仄仂亳亰仄 于 ruby
仆从舒仗仍亳 亳 仗仂仍亳仄仂亳亰仄 于 ruby仆从舒仗仍亳 亳 仗仂仍亳仄仂亳亰仄 于 ruby
仆从舒仗仍亳 亳 仗仂仍亳仄仂亳亰仄 于 ruby
Evgeny Smirnov
Ruby 舒亠仆 仗仂亞舒仄仄亳仂于舒仆亳
Ruby  舒亠仆 仗仂亞舒仄仄亳仂于舒仆亳Ruby  舒亠仆 仗仂亞舒仄仄亳仂于舒仆亳
Ruby 舒亠仆 仗仂亞舒仄仄亳仂于舒仆亳
Evgeny Smirnov
亳仆舒仄亳亠从仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 ruby
亳仆舒仄亳亠从仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 ruby亳仆舒仄亳亠从仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 ruby
亳仆舒仄亳亠从仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 ruby
Evgeny Smirnov
C++ 舒亰仂于亶. 舒仆亳亠 02.
C++ 舒亰仂于亶. 舒仆亳亠 02.C++ 舒亰仂于亶. 舒仆亳亠 02.
C++ 舒亰仂于亶. 舒仆亳亠 02.
Igor Shkulipa
仍亞仂亳仄 仆舒 ruby: 亢舒亟仆亠 舒仍亞仂亳仄
仍亞仂亳仄 仆舒 ruby: 亢舒亟仆亠 舒仍亞仂亳仄仍亞仂亳仄 仆舒 ruby: 亢舒亟仆亠 舒仍亞仂亳仄
仍亞仂亳仄 仆舒 ruby: 亢舒亟仆亠 舒仍亞仂亳仄
Evgeny Smirnov
弍舒弍仂从舒 从仂仍仍亠从亳亶 仆舒亳亰仆舒仆从: 从舒从 仗亳仄亠仆亳 仄仆仂亞仂 仆从亳亶 从 仂亟仆仂仄 舒亞仄亠仆...
弍舒弍仂从舒 从仂仍仍亠从亳亶 仆舒亳亰仆舒仆从: 从舒从 仗亳仄亠仆亳 仄仆仂亞仂 仆从亳亶 从 仂亟仆仂仄 舒亞仄亠仆...弍舒弍仂从舒 从仂仍仍亠从亳亶 仆舒亳亰仆舒仆从: 从舒从 仗亳仄亠仆亳 仄仆仂亞仂 仆从亳亶 从 仂亟仆仂仄 舒亞仄亠仆...
弍舒弍仂从舒 从仂仍仍亠从亳亶 仆舒亳亰仆舒仆从: 从舒从 仗亳仄亠仆亳 仄仆仂亞仂 仆从亳亶 从 仂亟仆仂仄 舒亞仄亠仆...
corehard_by
Ruby: 舒弍仂舒 仄舒亳于舒仄亳
Ruby: 舒弍仂舒  仄舒亳于舒仄亳Ruby: 舒弍仂舒  仄舒亳于舒仄亳
Ruby: 舒弍仂舒 仄舒亳于舒仄亳
Evgeny Smirnov
舒亟舒亳 仗仂 于 ruby
舒亟舒亳 仗仂  于 ruby舒亟舒亳 仗仂  于 ruby
舒亟舒亳 仗仂 于 ruby
Evgeny Smirnov
舒仗亳 于仗仂仄仂亞舒亠仍仆亶 舒仍亞仂亳仄仂于 仆舒 磶从舒 舒从舒仍
舒仗亳 于仗仂仄仂亞舒亠仍仆亶 舒仍亞仂亳仄仂于 仆舒 磶从舒 舒从舒仍舒仗亳 于仗仂仄仂亞舒亠仍仆亶 舒仍亞仂亳仄仂于 仆舒 磶从舒 舒从舒仍
舒仗亳 于仗仂仄仂亞舒亠仍仆亶 舒仍亞仂亳仄仂于 仆舒 磶从舒 舒从舒仍
Andrey Dolinin
Cpp/cli types
Cpp/cli typesCpp/cli types
Cpp/cli types
mcroitor
亠仆磻仂于舒 亞.于.
亠仆磻仂于舒 亞.于.亠仆磻仂于舒 亞.于.
亠仆磻仂于舒 亞.于.
sharikdp
弍亳亠 于亠亟亠仆亳 仂 磶从亠 仗仂亞舒仄仄亳仂于舒仆亳 舒从舒仍
弍亳亠 于亠亟亠仆亳 仂 磶从亠 仗仂亞舒仄仄亳仂于舒仆亳 舒从舒仍弍亳亠 于亠亟亠仆亳 仂 磶从亠 仗仂亞舒仄仄亳仂于舒仆亳 舒从舒仍
弍亳亠 于亠亟亠仆亳 仂 磶从亠 仗仂亞舒仄仄亳仂于舒仆亳 舒从舒仍
Andrey Dolinin
弌仗仂仂弍 亰舒仗亳亳 舒仍亞仂亳仄仂于
弌仗仂仂弍 亰舒仗亳亳 舒仍亞仂亳仄仂于弌仗仂仂弍 亰舒仗亳亳 舒仍亞仂亳仄仂于
弌仗仂仂弍 亰舒仗亳亳 舒仍亞仂亳仄仂于
Andrey Dolinin
C++ 舒亰仂于亶. 舒仆亳亠 03.
C++ 舒亰仂于亶. 舒仆亳亠 03.C++ 舒亰仂于亶. 舒仆亳亠 03.
C++ 舒亰仂于亶. 舒仆亳亠 03.
Igor Shkulipa

Viewers also liked (9)

Scala laboratory: Globus. iteration #3
Scala laboratory: Globus. iteration #3Scala laboratory: Globus. iteration #3
Scala laboratory: Globus. iteration #3
Vasil Remeniuk
Types by Adform Research, Saulius Valatka
Types by Adform Research, Saulius ValatkaTypes by Adform Research, Saulius Valatka
Types by Adform Research, Saulius Valatka
Vasil Remeniuk
Spark Intro by Adform Research
Spark Intro by Adform ResearchSpark Intro by Adform Research
Spark Intro by Adform Research
Vasil Remeniuk
The Kotlin Programming Language, Svetlana Isakova
The Kotlin Programming Language, Svetlana IsakovaThe Kotlin Programming Language, Svetlana Isakova
The Kotlin Programming Language, Svetlana Isakova
Vasil Remeniuk
舒弍仂舒 Akka 弌luster, @afiskon, scalaby#14
舒弍仂舒  Akka 弌luster, @afiskon, scalaby#14舒弍仂舒  Akka 弌luster, @afiskon, scalaby#14
舒弍仂舒 Akka 弌luster, @afiskon, scalaby#14
Vasil Remeniuk
Cake pattern. Presentation by Alex Famin at scalaby#14
Cake pattern. Presentation by Alex Famin at scalaby#14Cake pattern. Presentation by Alex Famin at scalaby#14
Cake pattern. Presentation by Alex Famin at scalaby#14
Vasil Remeniuk
Testing in Scala by Adform research
Testing in Scala by Adform researchTesting in Scala by Adform research
Testing in Scala by Adform research
Vasil Remeniuk
scala.reflect, Eugene Burmako
scala.reflect, Eugene Burmakoscala.reflect, Eugene Burmako
scala.reflect, Eugene Burmako
Vasil Remeniuk
a million bots can't be wrong
a million bots can't be wronga million bots can't be wrong
a million bots can't be wrong
Vasil Remeniuk
Scala laboratory: Globus. iteration #3
Scala laboratory: Globus. iteration #3Scala laboratory: Globus. iteration #3
Scala laboratory: Globus. iteration #3
Vasil Remeniuk
Types by Adform Research, Saulius Valatka
Types by Adform Research, Saulius ValatkaTypes by Adform Research, Saulius Valatka
Types by Adform Research, Saulius Valatka
Vasil Remeniuk
Spark Intro by Adform Research
Spark Intro by Adform ResearchSpark Intro by Adform Research
Spark Intro by Adform Research
Vasil Remeniuk
The Kotlin Programming Language, Svetlana Isakova
The Kotlin Programming Language, Svetlana IsakovaThe Kotlin Programming Language, Svetlana Isakova
The Kotlin Programming Language, Svetlana Isakova
Vasil Remeniuk
舒弍仂舒 Akka 弌luster, @afiskon, scalaby#14
舒弍仂舒  Akka 弌luster, @afiskon, scalaby#14舒弍仂舒  Akka 弌luster, @afiskon, scalaby#14
舒弍仂舒 Akka 弌luster, @afiskon, scalaby#14
Vasil Remeniuk
Cake pattern. Presentation by Alex Famin at scalaby#14
Cake pattern. Presentation by Alex Famin at scalaby#14Cake pattern. Presentation by Alex Famin at scalaby#14
Cake pattern. Presentation by Alex Famin at scalaby#14
Vasil Remeniuk
Testing in Scala by Adform research
Testing in Scala by Adform researchTesting in Scala by Adform research
Testing in Scala by Adform research
Vasil Remeniuk
scala.reflect, Eugene Burmako
scala.reflect, Eugene Burmakoscala.reflect, Eugene Burmako
scala.reflect, Eugene Burmako
Vasil Remeniuk
a million bots can't be wrong
a million bots can't be wronga million bots can't be wrong
a million bots can't be wrong
Vasil Remeniuk

Similar to Scala Magic, Alexander Podhaliusin (9)

亊亰从 仗仂亞舒仄仄亳仂于舒仆亳 Go 亟仍 Perl-仗仂亞舒仄仄亳仂于
亊亰从 仗仂亞舒仄仄亳仂于舒仆亳 Go 亟仍 Perl-仗仂亞舒仄仄亳仂于亊亰从 仗仂亞舒仄仄亳仂于舒仆亳 Go 亟仍 Perl-仗仂亞舒仄仄亳仂于
亊亰从 仗仂亞舒仄仄亳仂于舒仆亳 Go 亟仍 Perl-仗仂亞舒仄仄亳仂于
Andrew Shitov
亳舒亳仍 舒于亟仂于 - 丐舒仆仗仂, ajax
亳舒亳仍 舒于亟仂于 - 丐舒仆仗仂, ajax亳舒亳仍 舒于亟仂于 - 丐舒仆仗仂, ajax
亳舒亳仍 舒于亟仂于 - 丐舒仆仗仂, ajax
Yandex
亳舒亳仍 舒于亟仂于 - JavaScript. 舒亰仂于亠 亰仆舒仆亳
亳舒亳仍 舒于亟仂于 - JavaScript. 舒亰仂于亠 亰仆舒仆亳亳舒亳仍 舒于亟仂于 - JavaScript. 舒亰仂于亠 亰仆舒仆亳
亳舒亳仍 舒于亟仂于 - JavaScript. 舒亰仂于亠 亰仆舒仆亳
Yandex
舒于亠仍 舒于仍仂于 - Scala 亟仍 仗仂亠亳仂仆舒仍仂于 - Joker 2013
舒于亠仍 舒于仍仂于 - Scala 亟仍 仗仂亠亳仂仆舒仍仂于 - Joker 2013舒于亠仍 舒于仍仂于 - Scala 亟仍 仗仂亠亳仂仆舒仍仂于 - Joker 2013
舒于亠仍 舒于仍仂于 - Scala 亟仍 仗仂亠亳仂仆舒仍仂于 - Joker 2013
ScalaNsk
亳舒亳仍 舒于亟仂于 油JavaScript: 舒亰仂于亠 亰仆舒仆亳
亳舒亳仍 舒于亟仂于 油JavaScript: 舒亰仂于亠 亰仆舒仆亳亳舒亳仍 舒于亟仂于 油JavaScript: 舒亰仂于亠 亰仆舒仆亳
亳舒亳仍 舒于亟仂于 油JavaScript: 舒亰仂于亠 亰仆舒仆亳
Yandex
Back to the future: 个仆从亳仂仆舒仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 于亠舒 亳 亠亞仂亟仆
Back to the future: 个仆从亳仂仆舒仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 于亠舒 亳 亠亞仂亟仆Back to the future: 个仆从亳仂仆舒仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 于亠舒 亳 亠亞仂亟仆
Back to the future: 个仆从亳仂仆舒仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 于亠舒 亳 亠亞仂亟仆
Alexander Granin
Discovering Lambdas in Java 8
Discovering Lambdas in Java 8Discovering Lambdas in Java 8
Discovering Lambdas in Java 8
Stfalcon Meetups
Pyton 仗仂弍亠仄 仆从亳仂仆舒仍仆亶 亳仍
Pyton  仗仂弍亠仄 仆从亳仂仆舒仍仆亶 亳仍Pyton  仗仂弍亠仄 仆从亳仂仆舒仍仆亶 亳仍
Pyton 仗仂弍亠仄 仆从亳仂仆舒仍仆亶 亳仍
Python Meetup
亊亰从 仗仂亞舒仄仄亳仂于舒仆亳 Go 亟仍 Perl-仗仂亞舒仄仄亳仂于
亊亰从 仗仂亞舒仄仄亳仂于舒仆亳 Go 亟仍 Perl-仗仂亞舒仄仄亳仂于亊亰从 仗仂亞舒仄仄亳仂于舒仆亳 Go 亟仍 Perl-仗仂亞舒仄仄亳仂于
亊亰从 仗仂亞舒仄仄亳仂于舒仆亳 Go 亟仍 Perl-仗仂亞舒仄仄亳仂于
Andrew Shitov
亳舒亳仍 舒于亟仂于 - 丐舒仆仗仂, ajax
亳舒亳仍 舒于亟仂于 - 丐舒仆仗仂, ajax亳舒亳仍 舒于亟仂于 - 丐舒仆仗仂, ajax
亳舒亳仍 舒于亟仂于 - 丐舒仆仗仂, ajax
Yandex
亳舒亳仍 舒于亟仂于 - JavaScript. 舒亰仂于亠 亰仆舒仆亳
亳舒亳仍 舒于亟仂于 - JavaScript. 舒亰仂于亠 亰仆舒仆亳亳舒亳仍 舒于亟仂于 - JavaScript. 舒亰仂于亠 亰仆舒仆亳
亳舒亳仍 舒于亟仂于 - JavaScript. 舒亰仂于亠 亰仆舒仆亳
Yandex
舒于亠仍 舒于仍仂于 - Scala 亟仍 仗仂亠亳仂仆舒仍仂于 - Joker 2013
舒于亠仍 舒于仍仂于 - Scala 亟仍 仗仂亠亳仂仆舒仍仂于 - Joker 2013舒于亠仍 舒于仍仂于 - Scala 亟仍 仗仂亠亳仂仆舒仍仂于 - Joker 2013
舒于亠仍 舒于仍仂于 - Scala 亟仍 仗仂亠亳仂仆舒仍仂于 - Joker 2013
ScalaNsk
亳舒亳仍 舒于亟仂于 油JavaScript: 舒亰仂于亠 亰仆舒仆亳
亳舒亳仍 舒于亟仂于 油JavaScript: 舒亰仂于亠 亰仆舒仆亳亳舒亳仍 舒于亟仂于 油JavaScript: 舒亰仂于亠 亰仆舒仆亳
亳舒亳仍 舒于亟仂于 油JavaScript: 舒亰仂于亠 亰仆舒仆亳
Yandex
Back to the future: 个仆从亳仂仆舒仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 于亠舒 亳 亠亞仂亟仆
Back to the future: 个仆从亳仂仆舒仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 于亠舒 亳 亠亞仂亟仆Back to the future: 个仆从亳仂仆舒仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 于亠舒 亳 亠亞仂亟仆
Back to the future: 个仆从亳仂仆舒仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 于亠舒 亳 亠亞仂亟仆
Alexander Granin
Discovering Lambdas in Java 8
Discovering Lambdas in Java 8Discovering Lambdas in Java 8
Discovering Lambdas in Java 8
Stfalcon Meetups
Pyton 仗仂弍亠仄 仆从亳仂仆舒仍仆亶 亳仍
Pyton  仗仂弍亠仄 仆从亳仂仆舒仍仆亶 亳仍Pyton  仗仂弍亠仄 仆从亳仂仆舒仍仆亶 亳仍
Pyton 仗仂弍亠仄 仆从亳仂仆舒仍仆亶 亳仍
Python Meetup

More from Vasil Remeniuk (20)

Product Minsk - 丐 亳 仂亞舒仄仄舒亳从
Product Minsk - 丐 亳 仂亞舒仄仄舒亳从Product Minsk - 丐 亳 仂亞舒仄仄舒亳从
Product Minsk - 丐 亳 仂亞舒仄仄舒亳从
Vasil Remeniuk
Types by Adform Research
Types by Adform ResearchTypes by Adform Research
Types by Adform Research
Vasil Remeniuk
Scalding by Adform Research, Alex Gryzlov
Scalding by Adform Research, Alex GryzlovScalding by Adform Research, Alex Gryzlov
Scalding by Adform Research, Alex Gryzlov
Vasil Remeniuk
Scalding by Adform Research, Alex Gryzlov
Scalding by Adform Research, Alex GryzlovScalding by Adform Research, Alex Gryzlov
Scalding by Adform Research, Alex Gryzlov
Vasil Remeniuk
Spark by Adform Research, Paulius
Spark by Adform Research, PauliusSpark by Adform Research, Paulius
Spark by Adform Research, Paulius
Vasil Remeniuk
Scala Style by Adform Research (Saulius Valatka)
Scala Style by Adform Research (Saulius Valatka)Scala Style by Adform Research (Saulius Valatka)
Scala Style by Adform Research (Saulius Valatka)
Vasil Remeniuk
Spark intro by Adform Research
Spark intro by Adform ResearchSpark intro by Adform Research
Spark intro by Adform Research
Vasil Remeniuk
SBT by Aform Research, Saulius Valatka
SBT by Aform Research, Saulius ValatkaSBT by Aform Research, Saulius Valatka
SBT by Aform Research, Saulius Valatka
Vasil Remeniuk
Scala laboratory: Globus. iteration #2
Scala laboratory: Globus. iteration #2Scala laboratory: Globus. iteration #2
Scala laboratory: Globus. iteration #2
Vasil Remeniuk
Testing in Scala. Adform Research
Testing in Scala. Adform ResearchTesting in Scala. Adform Research
Testing in Scala. Adform Research
Vasil Remeniuk
Scala laboratory. Globus. iteration #1
Scala laboratory. Globus. iteration #1Scala laboratory. Globus. iteration #1
Scala laboratory. Globus. iteration #1
Vasil Remeniuk
Cassandra + Spark + Elk
Cassandra + Spark + ElkCassandra + Spark + Elk
Cassandra + Spark + Elk
Vasil Remeniuk
仗 亳仗仂仍亰仂于舒仆亳 Spark, 仆仂于舒仆仂 仆舒 亠舒仍仆 仂弍亳
仗 亳仗仂仍亰仂于舒仆亳 Spark, 仆仂于舒仆仂 仆舒 亠舒仍仆 仂弍亳仗 亳仗仂仍亰仂于舒仆亳 Spark, 仆仂于舒仆仂 仆舒 亠舒仍仆 仂弍亳
仗 亳仗仂仍亰仂于舒仆亳 Spark, 仆仂于舒仆仂 仆舒 亠舒仍仆 仂弍亳
Vasil Remeniuk
ETL 仂 Spark
ETL 仂 SparkETL 仂 Spark
ETL 仂 Spark
Vasil Remeniuk
Funtional Reactive Programming with Examples in Scala + GWT
Funtional Reactive Programming with Examples in Scala + GWTFuntional Reactive Programming with Examples in Scala + GWT
Funtional Reactive Programming with Examples in Scala + GWT
Vasil Remeniuk
Vaadin+Scala
Vaadin+ScalaVaadin+Scala
Vaadin+Scala
Vasil Remeniuk
[亠]仗舒从亳仆亠 亳仗
[亠]仗舒从亳仆亠 亳仗[亠]仗舒从亳仆亠 亳仗
[亠]仗舒从亳仆亠 亳仗
Vasil Remeniuk
舒亠仄 仆亢仆舒 Scala?
舒亠仄 仆亢仆舒 Scala?舒亠仄 仆亢仆舒 Scala?
舒亠仄 仆亢仆舒 Scala?
Vasil Remeniuk
Metaprogramming in Scala 2.10, Eugene Burmako,
Metaprogramming  in Scala 2.10, Eugene Burmako, Metaprogramming  in Scala 2.10, Eugene Burmako,
Metaprogramming in Scala 2.10, Eugene Burmako,
Vasil Remeniuk
"Scala in Goozy", Alexey Zlobin
"Scala in Goozy", Alexey Zlobin "Scala in Goozy", Alexey Zlobin
"Scala in Goozy", Alexey Zlobin
Vasil Remeniuk
Product Minsk - 丐 亳 仂亞舒仄仄舒亳从
Product Minsk - 丐 亳 仂亞舒仄仄舒亳从Product Minsk - 丐 亳 仂亞舒仄仄舒亳从
Product Minsk - 丐 亳 仂亞舒仄仄舒亳从
Vasil Remeniuk
Types by Adform Research
Types by Adform ResearchTypes by Adform Research
Types by Adform Research
Vasil Remeniuk
Scalding by Adform Research, Alex Gryzlov
Scalding by Adform Research, Alex GryzlovScalding by Adform Research, Alex Gryzlov
Scalding by Adform Research, Alex Gryzlov
Vasil Remeniuk
Scalding by Adform Research, Alex Gryzlov
Scalding by Adform Research, Alex GryzlovScalding by Adform Research, Alex Gryzlov
Scalding by Adform Research, Alex Gryzlov
Vasil Remeniuk
Spark by Adform Research, Paulius
Spark by Adform Research, PauliusSpark by Adform Research, Paulius
Spark by Adform Research, Paulius
Vasil Remeniuk
Scala Style by Adform Research (Saulius Valatka)
Scala Style by Adform Research (Saulius Valatka)Scala Style by Adform Research (Saulius Valatka)
Scala Style by Adform Research (Saulius Valatka)
Vasil Remeniuk
Spark intro by Adform Research
Spark intro by Adform ResearchSpark intro by Adform Research
Spark intro by Adform Research
Vasil Remeniuk
SBT by Aform Research, Saulius Valatka
SBT by Aform Research, Saulius ValatkaSBT by Aform Research, Saulius Valatka
SBT by Aform Research, Saulius Valatka
Vasil Remeniuk
Scala laboratory: Globus. iteration #2
Scala laboratory: Globus. iteration #2Scala laboratory: Globus. iteration #2
Scala laboratory: Globus. iteration #2
Vasil Remeniuk
Testing in Scala. Adform Research
Testing in Scala. Adform ResearchTesting in Scala. Adform Research
Testing in Scala. Adform Research
Vasil Remeniuk
Scala laboratory. Globus. iteration #1
Scala laboratory. Globus. iteration #1Scala laboratory. Globus. iteration #1
Scala laboratory. Globus. iteration #1
Vasil Remeniuk
Cassandra + Spark + Elk
Cassandra + Spark + ElkCassandra + Spark + Elk
Cassandra + Spark + Elk
Vasil Remeniuk
仗 亳仗仂仍亰仂于舒仆亳 Spark, 仆仂于舒仆仂 仆舒 亠舒仍仆 仂弍亳
仗 亳仗仂仍亰仂于舒仆亳 Spark, 仆仂于舒仆仂 仆舒 亠舒仍仆 仂弍亳仗 亳仗仂仍亰仂于舒仆亳 Spark, 仆仂于舒仆仂 仆舒 亠舒仍仆 仂弍亳
仗 亳仗仂仍亰仂于舒仆亳 Spark, 仆仂于舒仆仂 仆舒 亠舒仍仆 仂弍亳
Vasil Remeniuk
Funtional Reactive Programming with Examples in Scala + GWT
Funtional Reactive Programming with Examples in Scala + GWTFuntional Reactive Programming with Examples in Scala + GWT
Funtional Reactive Programming with Examples in Scala + GWT
Vasil Remeniuk
[亠]仗舒从亳仆亠 亳仗
[亠]仗舒从亳仆亠 亳仗[亠]仗舒从亳仆亠 亳仗
[亠]仗舒从亳仆亠 亳仗
Vasil Remeniuk
舒亠仄 仆亢仆舒 Scala?
舒亠仄 仆亢仆舒 Scala?舒亠仄 仆亢仆舒 Scala?
舒亠仄 仆亢仆舒 Scala?
Vasil Remeniuk
Metaprogramming in Scala 2.10, Eugene Burmako,
Metaprogramming  in Scala 2.10, Eugene Burmako, Metaprogramming  in Scala 2.10, Eugene Burmako,
Metaprogramming in Scala 2.10, Eugene Burmako,
Vasil Remeniuk
"Scala in Goozy", Alexey Zlobin
"Scala in Goozy", Alexey Zlobin "Scala in Goozy", Alexey Zlobin
"Scala in Goozy", Alexey Zlobin
Vasil Remeniuk

Scala Magic, Alexander Podhaliusin

  • 2. Syntactic sugar For comprehensions By-name parameters Non local return Local functions Lazy values Generated ByteCode Binary Syntactic sugar compatibility Questions? 2 / 19
  • 3. For comprehensions Syntactic sugar For Scala for 磦仍磳 亳仆舒从亳亠从亳仄 舒舒仂仄, 亠仄 仆亠 comprehensions By-name 仄亠仆亠亠 仗舒于亳仍舒 仗亠仂弍舒亰仂于舒仆亳 亟仂于仂仍仆仂 仍仂亢仆 parameters Non local return 亟亳仆 亞亠仆亠舒仂 yield 仂亢亠, 仂 于亰仂于 仄亠仂亟舒 map Local functions Lazy values 亟亳仆 亞亠仆亠舒仂 弍亠亰 yield 仂亢亠, 仂 foreach Generated 亠从仂仍从仂 亞亠仆亠舒仂仂于 舒仆仍亳ム 于仂 flatMap ByteCode Binary compatibility Questions? f o r ( i < 1 t o 5) (1 to 5) . map { i = i > i } yield i i (1 to 5) . f o r e a c h { f o r ( i < 1 t o println ( i ) 5) 油 } i = println ( i ) > f o r { i < 1 t o 5 (1 to 5) . f l a t M a p { j < 1 t o 5} i = (1 to 5) . map { j = i + j } > > yield i + j } 仂亟仂弍仆亠亠 仄仂亢仆仂 仗仂亳舒 于 仗亠亳亳从舒亳亳. 3 / 19
  • 4. By-name parameters Syntactic sugar For 仂亰仄仂亢仆仂 于 于亰仂于 仄亠仂亟舒 仗亠亠亟舒于舒 于舒亢亠仆亳 comprehensions By-name 仍亠仆亳于仂 仂 亟亞仂亶 仗亳仄亠 仂亞仂, 亞亟亠 仆亠磦仆仂 仄仂亞 弍 parameters Non local return 亰舒亳 closures. 弌仍亠亟ム亳亠 亟于舒 仗亳仄亠舒 亳亟亠仆亳仆: Local functions Lazy values d e f foo ( x : => Int ) { d e f foo ( x : ( ) => Int ) { Generated ByteCode println ( x ) println ( x ( ) ) } } Binary compatibility foo ( 1 ) foo ( ( ) => 1 ) Questions? 丼仂 亳亰亠亟从舒 仄仂亢亠 仗亳于仂亟亳 从 仂亳弍从亠 (仗舒舒仄亠 弍亟亠 于亳仍 从舒亢亟亶 舒亰, 从仂亞亟舒 从 仆亠仄 弍亟亠 仗仂亳亰于仂亟亳 仂弍舒亠仆亳亠). 4 / 19
  • 5. Non local return Syntactic sugar For Return statement 于仆亳 closure 仆舒 亟亠仍亠 从仂仄仗亳仍亳亠 于 comprehensions By-name 从仂亟, 从仂仂亶 弍仂舒亠 NonLocalReturnControl. parameters Non local return 弍仂仍亳仆于亠 仍舒亠于 仂 亟仂弍仆仂, 仆仂 仆亢仆仂 亳于舒 Local functions 仍亠亟ム亠亠 Lazy values Generated 从亳亳仆 仗仂 仗仂亳亰于仂亟亳亠仍仆仂亳 从从舒 从仂亟舒 仂 ByteCode Binary exception 仍亠亟亠 亳亰弍亠亞舒 compatibility 亠仍亰 仍仂于亳 Throwable 于 仂仄 仄亠亠, 亞亟亠 仂 Questions? exception 弍仂舒亠 亳仍 亳仆舒从亳亠从仂亞仂 舒舒舒 仂仗亳舒仆仆仂亞仂 舒仆亠亠, 于亠 仂 仄仂亢亠 仗仂亳仂亟亳 仆亠磦仆仂 (for-comprehensions 亳 by-name parameters) 5 / 19
  • 6. Local functions Syntactic sugar For Java 仍ミ頴笑 于仗仂仄仂亞舒亠仍仆亶 从仂亟 仂仂仄仍磳 于 于亳亟亠 comprehensions By-name private 仄亠仂亟仂于 仆舒 仂于仆亠 从仍舒舒. Scala 仂 仄仂亢仆仂 parameters Non local return 亟亠仍舒 弍仂仍亠亠 从亳仂于舒仆仆仄, 亠仍亳 亳仗仂仍亰仂于舒 Local functions 仍仂从舒仍仆亠 仄亠仂亟, 仂 仆舒 仂于仆亠 bytecode 仗仂仍舒亠 Lazy values Generated 仗亳仄亠仆仂 仂亢亠 舒仄仂亠: ByteCode Binary compatibility import scala . runtime . IntRef ; public class LocalFunctions { Questions? class LocalFunctions { p u b l i c void foo () { def foo { I n t R e f i $ 1 = new I n t R e f ( 1 ) ; var i = 1 i n t j$1 = 2; val j = 2 l o c a l $ 1 ( i$1 , j$1 ) ; def local { i += j 油 l o c a l $ 1 ( i$1 , j$1 ) ; } } p r i v a t e f i n a l void local$1 ( local IntRef intref , i n t i ) { local i n t r e f . e l e m += i ; } } } p u b l i c L o c a l F u n c t i o n s ( ) {} } 6 / 19
  • 7. Lazy values Syntactic sugar For 亅仂 仂亢亠 亳仆舒从亳亠从亳亶 舒舒, 从仂仂亶 仆舒亟仂 comprehensions By-name 亳仗仂仍亰仂于舒 舒从从舒仆仂 (舒从 从舒从 于仂亰仄仂亢仆 deadlock 亳 parameters Non local return 仗仂弍仍亠仄 仗仂亳亰于仂亟亳亠仍仆仂亳). 亠亰舒于亳亳仄仂 仂 Local functions 舒仗仂仍仂亢亠仆亳 lazy val, 从仂仄仗亳仍亳亠 仂仆 舒从亳仄 仂弍舒亰仂仄 Lazy values Generated ByteCode import scala . runtime . BoxedUnit ; Binary p u b l i c c l a s s Lazy { compatibility public int x () { i f ( ( b i t m a p $ 0 & 2 ) == 0 ) Questions? synchronized ( this ) { i f ( ( b i t m a p $ 0 & 2 ) == 0 ) { x = 1; bitmap$0 = bitmap$0 | 2; c l a s s Lazy { lazy val x = 1 油 } BoxedUnit _tmp = } BoxedUnit . UNIT ; } return x ; } p u b l i c L a z y ( ) {} private int x ; public v o l a t i l e i n t bitmap$0 ; } 7 / 19
  • 8. Syntactic sugar Generated ByteCode Classes and names Objects Traits Trait subclasses Linearization Initialisation order Binary Generated ByteCode compatibility Questions? 8 / 19
  • 9. Classes and names Syntactic sugar 仍 从仍舒仂于 仆亳亠亞仂 仄舒亞亳亠从仂亞仂 仆亠 仗仂亳仂亟亳. Generated ByteCode 舒从 仗亠仂弍舒亰ム 亳仄亠仆舒. 仍 弍仂仍亳仆于舒 亳仄于仂仍仂于 Classes and names Objects 亠 亠亞仂 亠从仂于亶 从于亳于舒仍亠仆 Traits Trait subclasses : 油 $colon Linearization Initialisation order + 油 $plus Binary 息 油 $u00A9 compatibility Questions? 仆亳 Scala 从仂亟舒 仄仂亢仆仂 亳仗仂仍亰仂于舒 仂弍舒 于舒亳舒仆舒 仗仂亟仂弍仆 亳亟亠仆亳亳从舒仂仂于 仂亟仂弍仆亠亠 仄仂亢仆仂 亳亰亳 仗亠仂弍舒亰仂于舒仆亳 仗仂仄仂 仄亠仂亟仂于 NameTransfomer.encode/decode 亳亰 scala-compiler.jar. 9 / 19
  • 10. Objects Syntactic sugar 弍亠从 于亠亞亟舒 从仂仄仗亳仍亳亠 于 亟于舒 从仍舒舒. Generated ByteCode Classes and names Object$ 仂亟亠亢亳 于 亠弍亠 舒亳亠从仂亠 仗仂仍亠 MODULE$, Objects 舒 舒从亢亠 从仂亟 于亠 仄亠仂亟仂于 Traits Trait subclasses Object 仂亟亠亢亳 于 亠弍亠 于亠 舒亳亠从亳亠 仄亠仂亟 Linearization Initialisation order 仂弍亠从舒, 亠仍仂仄 于亳亟舒 Object$.MODULE$.foo() Binary compatibility 舒亢仆仂 仗仂仆亳仄舒, 仂 舒亳亠从亳亠 仄亠仂亟 亟仂弍舒于仍亠仆 亟仍 Questions? 亟仂弍于舒 于亰仂于舒 亳亰 Java. 丐亠仄 仆亠 仄亠仆亠亠 仂仆亳 亟仂弍舒于仍ム 仆亠 于亠亞亟舒. Companion Trait 仆亠 亟仂弍舒于仍磳 仆亳亠亞仂. Companion Class 仆亠 亟仂弍舒于仍ム 仄亠仂亟 舒从亳仄 亳仄亠仆亠仄, 从仂仂仂亠 亢亠 亠 于 仂仄 从仍舒亠 亠仂亟 从仍舒舒 java.lang.Object 10 / 19
  • 11. Traits Syntactic sugar 仍亳 trait 仂仍亳舒亠 仂 仂弍仆仂亞仂 亳仆亠亠亶舒 于 Java Generated ByteCode 仆舒仍亳亳亠仄 从仂仆从亠仆 仄亠仂亟仂于, 仂 从 仂仂于亠于ム亠仄 Classes and names Objects 亳仆亠亠亶 弍亟亠 仂亰亟舒仆 从仍舒 Trait$class Traits Trait subclasses 亳仄仗仍亠仄亠仆舒亳亠亶 亳 仄亠仂亟仂于. Linearization Initialisation order Binary public abstract class A$class { compatibility public static int foo ( A $this , int x) { Questions? return 2; trait A { } val x = 1 油 public s t a t i c void $init$ ( A $this def foo ( x : Int ) = 2 ) { } $this . test$A$_setter_$x_$eq (1) ; } } 11 / 19
  • 12. Trait subclasses Syntactic sugar 仍亳 于 Java 仗仂仗舒 亠舒仍亳亰仂于舒 Trait, 于 从仂仂仂仄 亠 Generated ByteCode 亢亠 亳仄仗仍亠仄亠仆亳仂于舒仆亠 仄亠仂亟, 仂 亳 于亠 舒于仆仂 Classes and names Objects 仗亳仍仂 弍 亠舒仍亳亰仂于于舒. 亞仂亶 于仂仗仂, 仂 仂 Traits Trait subclasses 仄仂亢仆仂 亟亠仍舒 仗亠亟亠仍仆仂 仍亠亞从仂: Linearization Initialisation order Binary i n t foo ( ) { r e t u r n Trait$class . foo ( t h i s ) ; } compatibility Questions? 仍舒亠 仆舒仍亠亟仆亳从仂于 仆舒仗亳舒仆仆 仆舒 Scala, 仂 亢亠 舒仄仂亠 亟亠仍舒亠 从仂仄仗亳仍仂. 12 / 19
  • 13. Linearization Syntactic sugar 亅仂 舒仍亞仂亳仄 亠弍亠 从仂仄仗亳仍仂, 仂弍 仂仗亠亟亠仍亳, Generated ByteCode 于 从舒从仂仄 仗仂磲从亠 仆舒亟仂 亳从舒 仄亠仂亟 于 弍舒亰仂于 从仍舒舒. Classes and names Objects Traits Trait subclasses trait A extends B Linearization trait B Initialisation order class C extends B Binary class D extends C with A compatibility Questions? 亟亠 仗仂磲仂从 D, A, C, B. 仍亳 亟于舒 仄亠仂亟舒 仂亟亳仆舒从仂于仂亶 亳亞仆舒仂亶 弍亠亰 仄仂亟亳亳从舒仂舒 override 仗亳仂亟 于 从仍舒 仆舒仍亠亟仆亳从 亳亰 仗亠亠亶仂于, 仂 仂亳弍从亳 仆亠 弍亟亠, 舒从 从舒从 仂弍磶舒亠仍仆仂 仆舒亟仂 弍亟亠 仗亠亠仂仗亠亟亠仍亳 亳亞仆舒. 仍亳 亢亠 从仂亞仂-仂 亠 仄仂亟亳亳从舒仂 override, 仄仂亢亠 仍亳 仆亠磦仆亶 override 仂亞仍舒仆仂 仗舒于亳仍舒仄 仍亳仆亠舒亳亰舒亳亳. 13 / 19
  • 14. Initialisation order Syntactic sugar 仆亳亳舒仍亳亰舒亳 仗仂亳仂亟亳 于 仗仂磲从亠, 仂弍舒仆仂仄 Generated ByteCode 仍亳仆亠舒亳亰舒亳亳. 仍亳 从 仗亠亠仄亠仆仆仂亶 仂弍舒亳 亟仂 仂亞仂, 从舒从 Classes and names Objects 仂仆舒 仗仂亳仆亳亳舒仍亳亰亳仂于舒仆舒, 仄仂亢仆仂 仗仂仍亳 NPE. Traits Trait subclasses 亟于舒 仗仂仂弍舒 亳亰弍舒于亳 仂 仗仂亟仂弍仆 仗仂弍仍亠仄: Linearization Initialisation order 仗仂仍亰仂于舒 lazy val Binary compatibility 仗仂仍亰仂于舒 early definitions Questions? 14 / 19
  • 16. Methods Syntactic sugar 亟亠 于亠 仂亠仆 仗仂仂亢亠 仆舒 Java. 丼舒亠 于亠亞仂 仗仂弍仍亠仄 仆亠 Generated ByteCode 弍亟亠. Binary compatibility 仂弍舒于仍 仄亠仂亟 仄仂亢仆仂 亟舒亢亠 于 Trait, 仆仂 仂仍从仂 亠仍亳 Methods Values 舒亠 仄亠仂亟 仆亠 仍舒ム 仆舒 仆仂于亠, 舒从 从舒从 Lazy values 亳仄仗仍亠仄亠仆舒亳亳 于 从仍舒 仆舒仍亠亟仆亳从亳 亟仂弍舒于仍亠仆 仆亠 Questions? 弍亟. 从仍舒 仂仗舒仆仂 亟仂弍舒于仍 仄亠仂亟, 亳仄亠仆舒 从仂仂 仂于仗舒亟舒ム 亳仄亠仆亠仄 仄亠仂亟仂于 亳亰 Companion Object, 舒从 从舒从 舒亳亠从亳亠 亠舒仍亳亰舒亳亳 弍亟 亟舒仍亠仆 从仂仄仗亳仍仂仂仄, 仂 仄仂亢亠 于亰于舒 仗仂弍仍亠仄 从仂亟仂仄 仆舒仗亳舒仆仆仄 仆亠 仆舒 Scala. 16 / 19
  • 17. Values Syntactic sugar 仍亳 仗亠亠仄亠仆仆舒 仆舒仂亟亳 于 从仍舒亠 亳仍亳 仂弍亠从亠, 仂 Generated ByteCode 仗亠亠仄亠仆仆舒 从仂仄仗亳仍亳亠 于 getter, setter (亟仍 variables) 亳 Binary compatibility field, 从仂仂亶 亳仆亳舒仍亳亰亳亠 于 从仂仆从仂亠 从仍舒舒. Methods 亰仆舒亳 于亠 弍亟亠 舒从亢亠 仂仂仂 从舒从 亳 仄亠仂亟舒仄亳. Values Lazy values 仍亳 仗亠亠仄亠仆仆舒 仆舒仂亟亳 于 Trait, 仂 仂仆舒 从仂仄仗亳仍亳亠 Questions? 于 getter 亳 setter (于亠亞亟舒). 仆亳亳舒仍亳亰舒亳 仗仂亳仂亟亳 于 仄亠仂亟亠 Trait$class.$init$ 亠亠亰 于亰仂于 setter. 仆舒亳 亟仂弍舒于仍 仗亠亠仄亠仆仆 于 亠亶 仆亠仍亰. 丐舒从 从舒从 弍亟亠 于亰于舒仆 舒弍舒从仆亶 setter. 仂 舒仆舒仍仂亞亳仆仄 仗亳亳仆舒仄 仆亠仍亰 亳亰仄亠仆 def 仆舒 val 丐亠仄 仆亠 仄亠仆亠亠 val 仆舒 def 舒从亢亠 亳亰仄亠仆 仆亠仍亰, 舒从 从舒从 仂亞亟舒 于 从仍舒舒 仆舒仍亠亟仆亳从舒, 亞亟亠 从舒从 舒亰 亳 舒仆亳 field, 仗亠亠仄亠仆仆舒 仆亠 弍亟亠 仗仂亳仆亳亳舒仍亳亰亳仂于舒仆舒. 17 / 19
  • 18. Lazy values Syntactic sugar 仗仂亟从仍舒舒 仆亠 亞亠仆亠亳亠 field bitmap, 亠仍亳 仂仆 亠 于 Generated ByteCode 弍舒亰仂于仂仄 从仍舒亠. Binary compatibility 仂仂仄 于 亳 仍舒 亟仂弍舒于仍 lazy value 于 从仍舒 Methods Values 仆亠仍亰 Lazy values Trait 亟仂弍舒于仍 仄仂亢仆仂, 亠仍亳 舒 仗亠亠仄亠仆仆舒 仆亠 Questions? 弍亟亠 亳仗仂仍亰仂于舒仆舒 于 舒仂仄 从仂亟亠 丐舒从 从舒从 从仂仄仗亳仍亳 lazy val 于 Trait 仂 从仂仄仗亳仍亳亳 仄亠仂亟舒 仆亠 仂仍亳舒亠 仂于亠仄, 仂 亳 仄仂亢仆仂 亰舒仄亠仆 亟亞 仆舒 亟亞舒, 亳于舒 仂仍从仂, 仂 于 仆舒仍亠亟仆亳从舒 仗仂亟仂弍仆舒 亠仄舒仆亳从舒 仆亠 亳亰仄亠仆亳 18 / 19