Scala基礎文法(一)

3818 ワード

1.変数val/var
  val/var    :  = 


1.1変数を定義するキーワード
     val     
     var    
 

1.2宣言と付与の同時定義
        var    ,        ,   _
     eg: var str:String=_

2.メソッドdef
2.1形式:
  [   ] def methodName(name1:ArgsType1,name2:ArgsType2)[:retrunType]={
     //   
  }


2.2プロセスメソッドの戻りタイプがUnitの場合をプロセスと呼ぶ(推奨しない)
  eg:
    def test1(a:Int):Unit={} 
      ---->         :
    def test1(a:Int){}


2.3メソッドが非再帰メソッドの場合、戻りタイプは省略できます
    def test(a:Int)={
      a
    }
  eg:        ,          。
    def fac(a:Int):Int={
      a*fac(a-1)
    }


2.4メソッド呼び出しメソッド名(args)
  1.        ,       :    ()       
  2.     ,             。
  
   

eg:
 def info(a:Int,b:Int,c:Int)={
          a+b+c
 }
  //    :
  info(1,2,3)
  info(a=1,c=3,b=2)
  //  :          ,                    ,       。
  info(b=2,a=1,6) //  
  info(b=2,6,a=1) //     a,b     ,   c   ,    c               。 


2.5可変パラメータリスト
    1.             
    2.    :   * 
    3.           。 
    def test(a:Int,b:String,c:Any*)={
      println(c)
    }

3.データ型
8     +Unit
Unit <===> ()



クラス階層:
          Any(    ,    ) 
          
  AnyVal        AnyRef(   Java  Object)
  
8  +Unit          

          Nothing(      ,    )


AnyValには次のものがあります.
(  Scala           )

Byte Int Short Long Char Boolean Float Double + Unit

AnyRefには次のものがあります.
String(java.lang)                ...

4.クラスclass
4.1フォーマット:
class    private[package] (        ) extends  /   with   1 with   2{}


eg:
class Student(name:String,age:Int) extends Father with T1 with T2{
  //  
  //  
  //        
  println(".....")
  def this()={
    //.......
  }
}


4.2コンストラクタ:
マスターコンストラクタ:
クラスの定義と織りなす
補助コンストラクタ:
    1.     this      
    2.                                     


4.3マスターコンストラクタパラメータリスト
形式:
  1.   :    
  2.var    :  
  3.val    :  
  4.private val/var    :  
  5.@BeanProperty val/var    :  


まとめ:
  1.        ,           ,          。
  2.    val   ,   private     /  ,                   。
  3.    var   ,   private     /  ,                            _=       。
  4. 2,3             ,             。
  5.@BeanProperty    javaBean   set/get  

5.オブジェクトobject単例オブジェクト
書式:
 object     extends  /   with   1 with   2{}


まとめ:クラス内のメソッドとフィールドは非静的です.オブジェクトのメソッドとフィールドは静的です.
プログラムエントリ
1.Mainメソッド
    object TestMain1{
      //    
      def main(args:Array[String]):Unit={}
    }
         TestMain1.scala   。
 

2.拡張App
    object TestMain2 extends App{
      //......    
    }
         TestMain2.scala   。


準備:
     mkdir scala/day1
     vi TestMain1.scala


コンパイルコマンド:
        scalac  TestMain1.scala


現在のディレクトリの表示:ls
逆コンパイルツールを使用してTestMain 1を開きます.class
        scalap TestMain1
        javap -p TestMain1


コマンドの実行:
        scala TestMain1

6.特質trait
書式:
 trait     extends  /   with   1 {}


まとめ:
    1.        /  
    2.        /  
    3.          /  /  /  (  )

7.タイプtype
書式:
 type    =  


まとめ:
    1.          ,           ,      。
    2.                     ,             。