Scala语言编程初入门

             最近为了准备实习一直在自学Scala语言。由于时间和精力有限(一边准备期末考试,一边准备各种汇报大作业的日子终于要器去不复返啦,hiahiahia),只是学习了Scala语言的基础语法部分,为了方便日后继续深入,现在先记录下来。如果有错误,欢迎大家批评指正,我一定及时改正。

        (ps.   参考资料  菜鸟教程,http://www.runoob.com/)

                                                      在一个类中利用函数来封装各个模块

import scala.util.control._;

object mycode {   
   def main(args: Array[String]) {
      //在 Scala 中,使用关键词 "var" 声明变量,使用关键词 "val" 声明常量。
      //变量声明格式   var VariableName : DataType [=  Initial Value]
      var myvar:String="world"; //变量  
      val myval:String="hello";//常量
      //关于字符串的方法
      var len = myvar.length();//使用 length() 方法来获取字符串长度
      println("before change:content of myvar:`"+myvar+"length of it :"+len); // 输出w orld
      len = myvar.length();//使用 length() 方法来获取字符串长度
      myvar=myvar.concat(myval);//链接字符串
      len=myvar.length();
      println("After change:content of myvar:"+myvar+"length of it "+len); // 输出world hello
     
     //元组
      var two_e=(20,"hello");
      println(two_e);
      //字符串遍历赋值
    var X:Array[Int]=new Array[Int](5);
    var i:Int=1;
    for (i<-0 to 4)
      X(i)=i;
    printint(X(1),X(2),X(3)); //输出

    //判断if.....else......
    var x=20;
    judgement(x);

   //while循环
   loop(x);

   //multiplier匿名函数
   println("multiplier:"+multiplier(1));

   //about arrey  关于数组的函数
   about_arrey();
  
   }

def loop(x:Int)
{
  var y:Int=x;
  var loop=new Breaks;//使用break来结束循环
   loop.breakable
   {
     while(y<30)
     {
         if (y==25)
         {
          println(x);
          loop.break;
         }
     else
        y=y+1;
      }
   }
}

def judgement(x:Int)//判断x是否等于20
{
   if (x<20)
     println("x<20");
   else if (x==20)
     println("x==20");
   else
     println("x>20");
} 

def printint(x:Int*)//可变参数函数1
{
   var i:Int=0;
   var X:Int=1;
   for (X<-x)
   {
      println("No."+i+":"+X);
      i=i+1;
   } 
} 
var free:Int=3;
val multiplier= (i:Int) =>i*3;
def about_arrey()//数组赋值与遍历
{
  var mylist=new Array[Float](5);
  var i:Int=0;
  for (i<-0 to 4)
    mylist(i)=66.66;
  for (i<- 0 to 4)
    println("%f",mylist(i)); 
}
}






                                                                       利用类来封装       

import java.io._
import scala.util.matching.Regex
import java.io.FileReader
import java.io.FileNotFoundException
import java.io.IOException
import scala.io.Source

class point(x:Int,y:Int)//父类
{
     var px:Int=x;
     var py:Int=y;
     def move(dx:Int,dy:Int)
     {
          px=px+dx;
          py=py+dy;
          println("now position:"+px+"   "+py);
     }
}
class location (var x:Int,var y:Int,z:Int) extends point(x,y)//子类
{
      var pz:Int=z;
      def move(dx:Int,dy:Int,dz:Int)//方法重载
      {
           px=px+dx;
           py=py+dy;
           pz=pz+dz;
           println("now position:"+px+"   "+py+"    "+pz);

      }
      override def move (dx:Int,dy:Int)//重写非抽象方法时必须加override
      {
          println("want to move:"+dx,dy);
      }
}
class about_match(var input:Any) //模式匹配
{
     var x:Any=input;
     def match_test() : Any =this.x match
     {
           case 1 => "math 1";
           case "math 1" => 1;
     }
}

trait Equal//接口
{
    def isEqual(x:Int):Boolean;
    def isNotEqual(x:Int):Boolean;
}

class equal_or_not(val x:Int) extends Equal//接口的实现
{
    val pc:Int=x;
    def isEqual(x:Int) = this.pc == x;
    def isNotEqual(x:Int) = this.pc != x;
}
class about_file//文件读写(){ 
    def readfile(filename:String)//读文件并输出 
   {  
    Source.fromFile(filename ).foreach { print } 
    } 
    def writefile(filename:String) { 
    print("please input data: " ); 
    val line = readLine();//读取输入数据 
    val writer = new PrintWriter(new File(filename ));//创建写文件类 
    writer.write(line); writer.close(); }
 }
class about_ex//关于异常  try....catch....finally
{
       def error(file:String)
       {
         try {
         val f = new FileReader("file")
      } catch {
         case ex: FileNotFoundException => {
            println("Missing file exception")
         }
         case ex: IOException => {
            println("IO Exception")
         }
      } finally {
         println("Exiting finally...")
      }
       }

}

class about_tiqu//提取
{
      def tiqu( )
      {
      
      println ("Apply 方法 : " + apply("Zara", "gmail.com"));
      println ("Unapply 方法 : " + unapply("[email protected]"));
      println ("Unapply 方法 : " + unapply("Zara Ali"));

      }
   // 注入方法 (可选)
   def apply(user: String, domain: String) = {
      user +"@"+ domain
   }

   // 提取方法(必选)
   def unapply(str: String): Option[(String, String)] = {
      val parts = str split "@"
      if (parts.length == 2){
         Some(parts(0), parts(1)) 
      }else{
         None
      }
   }
}



class about_class private(val color:String)//私有构造方法
{
        println("hello,world\n");
      
}

//伴生对象,与类共享名字,可以访问类的私有属性和方法

object about_class
{
     def main(args:Array[String])
     {
          val pt = new point(20,10);//创建对象
          pt.move(10,10);
          val pr =new location(10,10,20);//创建子类对象
          pr.move(20,20,20);
          pr.move(20,30);
          val pl=new about_class("red");
          var equal=new equal_or_not(20);//演示接口的使用
          println(equal.isNotEqual(30));
          var ma=new about_match(1);//演示模式匹配
          println(ma.match_test());
          var pattern=new Regex("(S|s)cala");//正则表达式
          val str = "scala is cool,Scala is big cool";
          println((pattern findAllIn str).mkString(","));
          println(pattern replaceFirstIn(str,"Java"));
          var test=new about_ex();//演示异常
          test.error("test.txt");
          var test_tiqu=new about_tiqu();//演示提取
          test_tiqu.tiqu();
          var file=new about_file();//演示文件读写
          file.writefile("input.txt");
          file.readfile("input.txt");
     }
}





















你可能感兴趣的:(spark相关,scala,编程)