成人免费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教程

2009-07-22 07:42:00

Scala偏應用函數

2017-03-07 15:13:28

Scala偏函數函數

2013-07-30 13:35:12

methodfunction

2009-07-21 17:26:09

Scala本地函數

2023-09-12 07:38:36

C++getline函數

2009-07-22 07:57:00

ScalaCurry化函數

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-06-17 13:26:06

scala繼承模型

2023-06-30 17:56:31

Scala元組

2009-12-11 10:44:00

Scala講座函數 scala
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产美女在线观看 | 日本午夜精品一区二区三区 | 国产美女h视频 | 国产精品激情小视频 | 中文字幕的av | 一区二区不卡高清 | 亚洲精久久 | 国产自产c区 | 青青青伊人 | 精品影院| 成年网站在线观看 | 99久久99| 成人九区| 日韩成人精品在线 | 欧美精品一区二区免费 | 大象视频一区二区 | 一区二区免费看 | 亚洲福利在线观看 | 伊人久久精品一区二区三区 | 日日爱夜夜操 | 久久精品视频免费观看 | 亚洲一区二区电影网 | 91精品国产一区二区 | 欧美日韩精品一区二区 | 国产欧美一区二区三区久久手机版 | 欧美日韩亚| 黄在线免费观看 | 国产精品亚洲第一 | 日韩成人一区 | 日本一区二区不卡视频 | 九一在线| 国产在线激情视频 | 日日噜| 国产农村妇女毛片精品久久麻豆 | 精品日韩一区二区 | 亚洲在线一区二区三区 | 欧美日韩视频在线 | 天天拍天天操 | 91久久婷婷 | 日韩精品无码一区二区三区 | 欧洲成人免费视频 |