Scala基础教程(九):提取器、文件I/O

模式匹配使用提取器:

当一个类的实例后跟括号使用零个或多个参数的列表,所述编译器调用应用的方法在该实例上。我们可以定义同时适用对象和类。

如上述所提到的,unapply方法的目的是提取我们寻找一个特定的值。它相反的操作和apply一样。当比较使用匹配语句中unapply方法的提取对象将被自动执行,如下所示:

object Test {
   def main(args: Array[String]) {
      
      val x = Test(5)
      println(x)
 
      x match
      {
         case Test(num) => println(x+" is bigger two times than "+num)
         //unapply is invoked
         case _ => println("i cannot calculate")
      }
 
   }
   def apply(x: Int) = x*2
   def unapply(z: Int): Option[Int] = if (z%2==0) Some(z/2) else None
}

让我们编译和运行上面的程序,这将产生以下结果:

C:/>scalac Test.scala
C:/>scala Test
10
10 is bigger two times than 5
 
C:/>

 

 

Scala打开文件是利用Java对象和java.io.File,它们都可在Scala编程中用来读取和写入文件。以下是写入文件的一个例子:

import java.io._
 
object Test {
   def main(args: Array[String]) {
      val writer = new PrintWriter(new File("test.txt" ))
 
      writer.write("Hello Scala")
      writer.close()
   }
}

当上面的代码被编译和执行,它会创建一个有“Hello Scala”内容的文件。

C:/>scalac Test.scala
C:/>scala Test
 
C:/>

从屏幕读取一行:

有时需要从屏幕上读取用户输入,然后进行某些进一步的处理。下面的例子说明了如何从屏幕上读取输入:

object Test {
   def main(args: Array[String]) {
      print("Please enter your input : " )
      val line = Console.readLine
      
      println("Thanks, you just typed: " + line)
   }
}

当上面的代码被编译和执行,它会提示输入内容,并继续进行,直到按ENTER(回车)键。

C:/>scalac Test.scala
C:/>scala Test
scala Test
Please enter your input : Scala is great
Thanks, you just typed: Scala is great
 
C:/>

读取文件内容:

从文件中读取是非常简单的。可以使用Scala的Source 类和它配套对象读取文件。以下是这些显示如何从之前创建“test.txt”文件中读取内容的示例:

import scala.io.Source
 
object Test {
   def main(args: Array[String]) {
      println("Following is the content read:" )
 
      Source.fromFile("test.txt" ).foreach{ 
         print 
      }
   }
}

当上述代码被编译和执行时,它将读取test.txt文件并在屏幕上显示内容:

C:/>scalac Test.scala
C:/>scala Test
scala Test
Following is the content read:
Hello Scala
 
C:/>

from: http://www.yiibai.com/scala/scala_basic_syntax.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值