成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Scala中定義函數的方法:method

開發 后端
本文節選自Martin Odersky,Lex Spoon和Bill Venners所著,Regular翻譯的《Programming in Scala》的第八章。Scala是一種針對 JVM 將函數和面向對象技術組合在一起的編程語言。

定義函數最通用的方法是作為某個對象的成員。這種函數被稱為方法:method。作為例子,代碼8.1展示了兩個可以合作根據一個給定的文件名讀文件并打印輸出所有長度超過給定寬度的行的方法。每個打印輸出的行前綴它出現的文件名:

  1. import scala.io.Source  
  2. object LongLines {  
  3.   def processFile(filename: String, width: Int) {  
  4.     val source = Source.fromFile(filename)  
  5.     for (line < - source.getLines)  
  6.       processLine(filename, width, line)  
  7.   }  
  8.   private def processLine(filename:String, width:Int, line:String) {  
  9.     if (line.length > width)  
  10.       println(filename+": "+line.trim)  
  11.   }  
  12. }  
代碼 8.1 帶私有的processLine方法的LongLines對象

processFile方法帶了filename和width做參數。它用文件名創建了一個Source對象并,在for表達式的發生器中,對source調用getLines。第3章的第十二步曾經提到,getLines返回一個枚舉器,能在每一次枚舉中從文件里取出一行,包括換行符。for表達式通過調用幫助方法,processLine,處理所有的文件行。processLine方法帶三個參數:filename,width和line。它檢查是否文件行的長度超過給定長度,如果是,就打印文件名,跟著一個冒號,然后是文件行。

為了從命令行里使用LongLines,我們需要創建一個應用,把第一個命令行參數當作行長度,并把后續的參數解釋為文件名:本書中,我們通常不會在例子程序中檢查命令行參數的合法性,這既是為了保護林木資源,也是為了減少會模糊例子重點部分的套路代碼。作為交換就是,當輸入錯誤時,代之以產生有助的錯誤信息,我們的例子程序將拋出異常。 

  1. object FindLongLines {  
  2.  def main(args: Array[String]) {  
  3.   val width = args(0).toInt  
  4.   for (arg < - args.drop(1))  
  5.    LongLines.processFile(arg, width)  
  6.  }  
  7. }  
下面是如何使用這個應用程序去發現LongLines.scala里超過45字符長度的行(只有一行):

  1. $ scala FindLongLines 45 LongLines.scala  
  2. LongLines.scala: def processFile(filename: String, width: Int) {  

到此為止,這些與你能用面向對象語言做的很像。然而Scala里的函數概念比方法更寬泛。

【相關閱讀】

  1. 繼續領悟函數式:Scala指令式風格代碼的重構
  2. 學習Scala的變量范圍
  3. Scala:match表達式、break和continue
  4. 學習Scala:使用try-catch表達式處理異常
  5. Scala中的for表達式:枚舉的“瑞士軍刀”

責任編輯:book05 來源: Artima
相關推薦

2017-05-15 10:50:42

PythonBound MethoUnbound Met

2009-07-22 07:53:00

Scala無參數方法

2023-11-29 07:47:29

Golang函數

2009-07-20 16:56:51

Scala類的定義

2009-12-11 10:42:00

Scala講座類定義構造函數

2009-07-22 08:57:49

Scalafinal

2009-07-08 16:52:29

ScalaScala教程

2013-07-30 13:35:12

methodfunction

2009-07-22 07:42:00

Scala偏應用函數

2017-03-07 15:13:28

Scala偏函數函數

2009-07-21 17:26:09

Scala本地函數

2009-07-22 07:57:00

ScalaCurry化函數

2023-09-12 07:38:36

C++getline函數

2009-07-22 08:34:47

Scala方法和字段

2009-07-22 09:22:20

Scala工廠對象

2009-07-21 12:18:37

ScalaRational對象toString

2009-09-24 09:41:00

Scala講座Scala

2009-12-11 10:44:00

Scala講座函數 scala

2009-06-17 13:26:06

scala繼承模型

2023-06-30 17:56:31

Scala元組
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99视频在线播放 | 狠狠色狠狠色综合日日92 | 最近日韩中文字幕 | 精品免费视频一区二区 | 欧美手机在线 | 91精品久久久久久久久中文字幕 | 成人午夜视频在线观看 | av一区二区在线观看 | 欧洲免费毛片 | 欧美一二区 | 91小视频在线 | 国产yw851.c免费观看网站 | 一区二区久久 | 韩国av电影网 | 免费视频二区 | 日本黄色一级片视频 | 一区二区三区视频在线观看 | 欧美αv| 国产一区二区三区精品久久久 | 亚洲啊v在线 | 国产精品欧美一区二区三区 | 成人精品视频99在线观看免费 | 99re在线视频| 久久久久国产一区二区三区四区 | 男女羞羞在线观看 | 成人在线观看网站 | 中文字幕日韩欧美一区二区三区 | 中文字幕在线观看 | 亚洲一区二区三区免费在线观看 | 亚洲乱码一区二区 | 色爽女 | 精品视频久久久久久 | 宅男伊人 | 中文字幕精品视频 | 九九久久久 | 国产精品99久久免费观看 | 亚洲精品久久久久久久久久久久久 | 国产a视频 | 天天躁日日躁狠狠躁2018小说 | 久久综合久 | 久久久久久久av麻豆果冻 |