鍍金池/ 教程/ Scala/ 函數(shù)–類成員函數(shù)
包對(duì)象
Ordered Trait
組合和繼承–定義 final 成員
基本數(shù)據(jù)類型
Match 表達(dá)式
類和對(duì)象 (三)
操作基本數(shù)據(jù)類型
for 表達(dá)式
組合和繼承–重載成員函數(shù)和方法
類和對(duì)象 (二)
組合和繼承–定義 factory 對(duì)象
組合和繼承–多態(tài)和動(dòng)態(tài)綁定
Trait 的基本概念
if 表達(dá)式
組合和繼承–抽象類
函數(shù)–函數(shù)字面量的一些簡(jiǎn)化寫法
while 循環(huán)
組合和繼承–使用組合還是繼承?
訪問控制修飾符
Trait 示例–Rectangular 對(duì)象
組合和繼承–定義參數(shù)化成員變量
組合和繼承–定義無參數(shù)方法
類和對(duì)象 (一)
函數(shù)–閉包
函數(shù)–類成員函數(shù)
Scala 基本數(shù)據(jù)類型的實(shí)現(xiàn)方法
try 表達(dá)式處理異常
選擇瘦接口還是胖接口設(shè)計(jì)?
組合和繼承–小結(jié)
創(chuàng)建新的控制結(jié)構(gòu)
使用 import
為訪問控制修飾符添加作用域
Scala 的類層次關(guān)系
類和對(duì)象 (五)
傳名參數(shù)
柯里化函數(shù)
函數(shù)–頭等公民
組合和組合和繼承–定義 heighten 和 widen 函數(shù)
使用 Package–將代碼放入包中
隱含的 import
所有類的公共子類–底層類型
進(jìn)一步 Scala
函數(shù)–局部函數(shù)
引用包中的代碼
組合和繼承–使用 override 修飾符
組合和繼承–實(shí)現(xiàn)類 Element 的 above,beside 和 toString()方法
類和對(duì)象 (四)
函數(shù)–尾遞歸
沒有“break”和“continue”的日子
組合和繼承–調(diào)用基類構(gòu)造函數(shù)
減低代碼重復(fù)
函數(shù)–函數(shù)–可變參數(shù),命名參數(shù),缺省參數(shù)
起步 Scala
組合和繼承–擴(kuò)展類
函數(shù)–部分應(yīng)用的函數(shù)
開始神奇的 Scala編程之旅
組合和繼承–概述
Trait 用來實(shí)現(xiàn)可疊加的修改操作

函數(shù)–類成員函數(shù)

當(dāng)程序越來越大,你需要將代碼細(xì)化為小的容易管理的模塊。Scala 支持多種方法來細(xì)化程序代碼,這些方法也為有經(jīng)驗(yàn)的程序員已經(jīng)掌握的:使用函數(shù),和 Java 相比,Scala 提供了多種 Java 不支持的方法來定義函數(shù),除了類成員函數(shù)外,Scala 還支持嵌套函數(shù),函數(shù)字面量,函數(shù)變量等。

本篇先介紹類或?qū)ο蟮某蓡T函數(shù)。這也是最常見的定義函數(shù)的方法。例如下面的例子定義了兩個(gè)成員函數(shù):

import scala.io.Source
object LongLines {
  def processFile(filename: String, width: Int) {
    val source= Source.fromFile(filename)
    for (line <- source.getLines())
      processLine(filename,width,line)
   }
   private def processLine(filename:String,
     width:Int, line:String){
     if(line.length > width)
       println(filename + ":" +line.trim)
   }
}

成員函數(shù) processFile 使用兩個(gè)參數(shù),一個(gè)文件名,一個(gè)為字符長度,其作用是打印出文件中超過指定字符長度的所有行。它調(diào)用另外一個(gè)私有成員函數(shù) processLine 完成實(shí)際的操作。

這個(gè)成員函數(shù),如果作為腳本使用,可以使用如下代碼:

LongLines.processFile(args(0),args(1).toInt)

可以看到 Scala 類成員函數(shù)的使用方法和其它面向?qū)ο蟮某绦蛘Z言如 Java 基本一致。在后面的文章將介紹 Scala 函數(shù)不同于 Java 的一些特性。