有時候乙個變數的名字或者值並不重要或者並不會被使用,那麼我們可以宣告這個變數:
val _ = 100
val l = (1 to 10).map(_ => 100)
還有一種情形是在self-types中作為型別限制:
trait engine
trait motor
實現motor 時必須要先實現engine。
最後, 在范型中也會使用到下劃線。
def process(list: list[option[_]]): int = list.length
比如我們在進行import時, 想引入包中所有的類:
import cats.implicits._
還有一種使用方式就是在模式匹配中:以下表示匹配所有可能的結果
something match
當我們不知道乙個變數的預設初始值時, 可以用下劃線表示, 這樣編譯器會自動根據變數的型別給變數賦乙個預設的初始值:
var myvar: string = _
// 一般寫法
list(1,2,3,4).map(x => x * 5)
// 使用下劃線語法糖
list(1,2,3,4),map(_ * 5)
// _+_ 和 (a,b) => a+b 是一樣的
val sumfun: (int,int) => int = _ + _
當我們需要將乙個方法轉化成乙個函式時, 我們可以使用下劃線:
def sum(x: int, y: int) = x + y
val sumfun = sum _
此時編譯器會建立乙個新的lambda:(x,y) => sum(x,y)
范型本身的型別引數就是乙個范型
// h 也是乙個范型
class higherkindedtype[h[_]]
// 初始化 無需指定list[string] 或其他
val myone = new higherkindedtype[list]
當我們需要將乙個集合傳給乙個帶有可變引數的方法時
def mymethod(words: string*) = ???
val words = list("this", "is", "so", "cool")
val res = mymethod(words: _*)
scala 中 下劃線與星號( )
1.變長引數 例如定義乙個變長引數的方法sum,然後計算1 5的和,可以寫為 scala def sum args int sum args int int scala val s sum 1,2,3,4,5 s int 15但是如果使用這種方式就會報錯 scala val s sum 1 to 5...
Python中下劃線說明
在python中經常看到方法或者變數前帶有下劃線,稍作解釋。1.前後雙下劃線 mtthod 這一般是系統定義的特殊方法,類似於類的構造方法 init 2.前單下劃線 以單下劃線開頭的變數指的是變數的許可權型別為protected,即是保護許可權的變數,該型別的變數只能通過其本身及子類的例項物件能夠訪...
python中下劃線 的用途
python 用下劃線作為變數字首和字尾指定特殊變數。不能用 from module import 匯入 系統定義名字 類中的私有變數名 核心風格 避免用下劃線作為變數名的開頭。因為下劃線對直譯器有特殊的意義,而且是內建識別符號所使用的符號,我們建議程式設計師避免用下劃線作為變數名的開頭。一般來講,...