scala筆記-變長引數(5)
變長引數
在Scala中,有時我們需要將函式定義為引數個數可變的形式,則此時可以使用變長引數定義函式。
def sum(nums: Int*) = {
var res = 0
for (num <- nums) res += num
res
}
sum(1, 2, 3, 4, 5)
使用序列呼叫變長引數
在如果想要將一個已有的序列直接呼叫變長引數函式,是不對的。比如val s = sum(1 to 5)。此時需要使用Scala特殊的語法將引數定義為序列,讓Scala直譯器能夠識別。這種語法非常有用!一定要好好主意,在spark的原始碼中大量地使用到了。
val s = sum(1 to 5: _*)
案例:使用遞迴函式實現累加
def sum2(nums: Int*): Int = {
if (nums.length == 0) 0
else nums.head + sum2(nums.tail: _*)
}
相關推薦
scala筆記-變長引數(5)
變長引數 在Scala中,有時我們需要將函式定義為引數個數可變的形式,則此時可以使用變長引數定義函式。 def sum(nums: Int*) = { var res = 0 for (num <- nums) res += num res } sum(1,
scala筆記-面向物件程式設計(10)
定義一個簡單的類 // 定義類,包含field以及方法 class HelloWorld { private var name = "leo" def sayHello() { print("Hello, " + name) } def getName = name
scala筆記-Map與Tuple(9)
建立Map // 建立一個不可變的Map val ages = Map("Leo" -> 30, "Jen" -> 25, "Jack" -> 23) ages("Leo") = 31 // 建立一個可變的Map val ages = scala.collectio
使用指標來實現變長陣列(VLA)
實現程式碼: #include <cstdio> #include <cstdlib> void usePtoImplementVLA(int SIZE) { scanf("%d", &SIZE); int *pVLA = (int *)malloc(size
CCNA學習筆記 基礎知識回顧(5)
CCNA總結(簡) 一、 OSI參考模型 七層 應用層 抽象語言---->編碼 表示層 編碼---->二進位制 會話層 應用程式提供會話地址 類似:QQ號碼 *上三層就是應用程式對資訊程序加工處理,直到可以被傳輸(相當於OSI"工廠"生產貨物的車間);
菜鳥學習筆記——前端開發——CSS(5) 例項練習
由於上次做網頁佈局的練習摔得有點慘,這次再找一個練一練,效果見下方動圖。例題網址 http://www.runoob.com/w3cnote/htmlcss-make-a-website.html這次練習的是——簡單的響應式網頁step1:只佈局,無響應效果導航欄由於之
scala(2) 變長引數 lazy 異常處理 陣列Array Map tuple
可變長引數 宣告引數型別後加* def union(s:Int*)={ var sum=0 for (i:Int<-s){ sum+=i } sum }
scala筆記-隱式轉換與隱式引數(16)
Scala提供的隱式轉換和隱式引數功能,是非常有特色的功能。是Java等程式語言所沒有的功能。它可以允許你手動指定,將某種型別的物件轉換成其他型別的物件。通過這些功能,可以實現非常強大,而且特殊的功能。 Scala的隱式轉換,其實最核心的就是定義隱式轉換函式,即implicit conv
scala筆記-型別引數(15)
型別引數是什麼? 型別引數其實就類似於Java中的泛型。先說說Java中的泛型是什麼,比如我們有List a = new ArrayList(),接著a.add(1),沒問題,a.add(“2”),然後我們a.get(1) == 2,對不對?肯定不對了,a.get(1)獲取的其實是個
scala筆記-預設引數和帶名引數(4)
預設引數 在Scala中,有時我們呼叫某些函式時,不希望給出引數的具體值,而希望使用引數自身預設的值,此時就定義在定義函式時使用預設引數。 def sayHello(firstName: String, middleName: String = "William", lastNa
【原創】python學習筆記(5)--《笨辦法學python》,指令碼帶引數
一 指令碼檔案 (1) 簡單的說就是一段自己寫的,可執行的程式碼,否則會報錯 (2)簡單指令碼,直接 python xxx1.py (3)帶引數指令碼,需要 python xxx2.py argv1 argv2 argv3 根據指令碼引數的數量,
Scala入門到精通——第二十一節 型別引數(三)-協變與逆變
本節主要內容 協變 逆變 型別通匹符 1. 協變 協變定義形式如:trait List[+T] {} 。當型別S是型別A的子型別時,則List[S]也可以認為是List[A}的子型別,即List[S]可以泛化為List[A]。也就是被引數化
快學Scala學習筆記及習題解答(5-8類、物件、包和繼承)
本文scala使用的版本是2.11.7 第五章 類 5.1 基本操作 class Person { // Scala會生成一個私有的final欄位和一個getter方法,但沒有setter val timeStamp = ne
Scala學習筆記(5)—— Scala 模式匹配
1 模式匹配 package com.scalatest.scala.pattern import scala.util.Random object MatchApp extends App { val names = Array("Mike", "John", "Jen
學以致用——Java原始碼——使用變長引數列表實現n個數的連乘(Variable-Length Argument List)
發現兩年前寫的程式碼與題目要求有較大出入(看來當時沒搞清楚變長引數列表是怎麼回事),改進如下:使用變長陣列作為連乘方法的引數列表(注意public static double multiply(double... factors)一句中的省略號即表示變長引數)。 之前的程式碼參考: ht
C++11嚐鮮:Variadic Function Templates(帶變長引數的函式模板)(續)
程式碼1 #include <iostream> #include <string> #include <boost/ref.hpp> #include <b
Java for Web學習筆記(七):Servlet(5)初始化引數
Context Init引數 在web.xml中可以基於整個上下文進行設定,在web app內各個Servlet都可以獲取。 <context-param> <param-name>settingOne</param-name> <param-
C++傳智筆記(5):C++完整demo
內部 urn else clas spa char log getx system MyPoint.h #pragma once class MyPoint { private: double x0, y0; //點坐標 public: void setPoint(d
構建之法——讀書筆記(5)
exp 時間 微軟 padding 層次結構 敏捷 參加 解決問題 企業 第七章 MSF What is MSF?——Microsoft Solution Framework(微軟解決方案框架)即一個方法論,也就是微軟推薦的軟件開發方法。 MSF基本原則: MSF沒有像敏捷
Swift學習筆記(5):集合類型
nbsp roc 三種 一個 刪除指定元素 edge 空值 port 自定義 目錄: 數組:Array 集合:Set 字典:Dictionary Swift提供Array(有序集合數據)、Set(無序無重復集合)和Dictionary(無序鍵值對集合)三