自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Scala允許的重復(fù)參數(shù)

開發(fā) 后端
本文節(jié)選自Martin Odersky,Lex Spoon和Bill Venners所著,Regular翻譯的《Programming in Scala》的第八章。Scala是一種針對 JVM 將函數(shù)和面向?qū)ο蠹夹g(shù)組合在一起的編程語言。

Scala允許你指明函數(shù)的***一個參數(shù)可以是重復(fù)的。這可以允許客戶向函數(shù)傳入可變長度參數(shù)列表。想要標(biāo)注一個重復(fù)參數(shù),在參數(shù)的類型之后放一個星號。例如:

  1. scala> def echo(args: String*) =  
  2.  for (arg < - args) println(arg)  
  3. echo: (String*)Unit  

51CTO編輯推薦:Scala編程語言專題

這樣定義,echo可以被零個至多個String參數(shù)調(diào)用:

  1. scala> echo()  
  2. scala> echo("one")  
  3. one  
  4. scala> echo("hello""world!")  
  5. hello  
  6. world! 
函數(shù)內(nèi)部,重復(fù)參數(shù)的類型是聲明參數(shù)類型的數(shù)組。因此,echo函數(shù)里被聲明為類型“String*”的args的類型實際上是Array[String]。然而,如果你有一個合適類型的數(shù)組,并嘗試把它當(dāng)作重復(fù)參數(shù)傳入,你會得到一個編譯器錯誤:

  1. scala> val arr = Array("What's""up""doc?")  
  2. arr: Array[java.lang.String] = Array(What's, up, doc?)  
  3. scala> echo(arr)  
  4. < console>:7: error: type mismatch;  
  5.  found : Array[java.lang.String]  
  6.  required: String  
  7.  echo(arr)  
  8.  ˆ  
要實現(xiàn)這個做法,你需要在數(shù)組參數(shù)后添加一個冒號和一個_*符號,像這樣:

  1. scala> echo(arr: _*)  
  2. What's  
  3. up  
  4. doc?  

這個標(biāo)注告訴編譯器把a(bǔ)rr的每個元素當(dāng)作參數(shù),而不是當(dāng)作單一的參數(shù)傳給echo。

【相關(guān)閱讀】

  1. 學(xué)習(xí)Scala的閉包
  2. Scala的偏應(yīng)用函數(shù)
  3. Scala:函數(shù)文本的短格式和占位符語法
  4. 介紹Scala的***類函數(shù)
  5. Scala的本地函數(shù):將私有方法轉(zhuǎn)換為本地方法

責(zé)任編輯:book05 來源: Artima
相關(guān)推薦

2009-07-22 07:45:00

Scala代碼重復(fù)

2009-07-22 07:53:00

Scala無參數(shù)方法

2009-07-09 00:25:00

Scala參數(shù)化

2009-07-22 07:50:00

Scala傳名參數(shù)

2009-07-08 09:47:49

Scala 2.8Scala

2009-07-08 12:43:59

Scala ServlScala語言

2010-09-14 15:34:41

Scala

2020-10-31 17:33:18

Scala語言函數(shù)

2009-11-16 17:04:46

Inside Scal

2009-10-19 11:26:08

Scala循環(huán)數(shù)組

2009-07-22 08:34:47

Scala方法和字段

2009-08-21 16:17:25

ScalaTwitter API

2009-06-16 17:54:38

Scala類語法語義

2009-12-09 09:15:47

從Java走進(jìn)ScalTwitter API

2020-07-23 17:40:03

神經(jīng)網(wǎng)絡(luò)深度學(xué)習(xí)參數(shù)共享

2009-07-21 16:58:31

Scala變量范圍

2009-07-22 07:42:00

Scala偏應(yīng)用函數(shù)

2009-09-28 11:01:39

從Java走進(jìn)Scal

2009-07-22 07:43:00

Scala閉包

2009-09-22 10:15:42

PersistentQScala
點贊
收藏

51CTO技術(shù)棧公眾號