Scala 中下劃線的常見使用

2021-10-09 15:56:31 字數 1347 閱讀 5273

有時候乙個變數的名字或者值並不重要或者並不會被使用,那麼我們可以宣告這個變數:

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 匯入 系統定義名字 類中的私有變數名 核心風格 避免用下劃線作為變數名的開頭。因為下劃線對直譯器有特殊的意義,而且是內建識別符號所使用的符號,我們建議程式設計師避免用下劃線作為變數名的開頭。一般來講,...