偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Scala的泛型:最強(qiáng)大的特性

開發(fā) 后端
Scala創(chuàng)始人Martin Odersky曾說過,泛型正是他想要創(chuàng)建Scala語言的最重要因素之一。本文對Scala的泛型進(jìn)行了簡單的介紹。
文源自Michel Schinz和Philipp Haller所寫的A Scala Tutorial for Java programmers,由Bearice譯成中文。第一篇為Scala簡單做了一下入門,第二篇描述Scala對象,第三篇對Scala類做了一些介紹,第四篇介紹了Scala的模式匹配,第五篇則介紹Scala的Trait。下面是最后一部分,講述Scala的泛型。在Scala創(chuàng)始人Martin Odersky給51CTO的交流信件中他也提到過,說Scala的泛型是Scala最大的優(yōu)勢之一。

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

8 Scala的泛型

我們在這文章將要學(xué)習(xí)Scala的最后一個特性是泛型。Java程序員們可能最近才知道這個東西,因?yàn)檫@個特性是在Java1.5中才被加入的。

泛型是一種可以讓你使用類型參數(shù)的設(shè)施。例如當(dāng)一個程序員正在實(shí)現(xiàn)一個鏈表時,將不得不面對諸如如何決定鏈表中節(jié)點(diǎn)保存數(shù)據(jù)的類型之類的問題。正由于這是一個鏈表,所以往往會在不同的環(huán)境中使用,因此,我們不能草率的決定節(jié)點(diǎn)數(shù)據(jù)類型,比如說Int。這種決定是相當(dāng)?shù)牟萋是揖窒扌缘摹?

以前Java程序員們通常使用Object,所有類型的超類,來解決問題。但是這種方法遠(yuǎn)遠(yuǎn)算不上是理想方案,例如他無法處理基本類型如int、long、float等(1.6中的autobox特性可以解決這個問題——譯者注),而且會讓使用者不得不使用大量的動態(tài)類型轉(zhuǎn)換。

Scala中的泛型機(jī)制可以很輕松的解決這些個問題。來看下面這個最簡單的容器類:一個引用,可以指向某個對象或者指向空。

class Reference[T] {
       
private var contents: T = _
       
def set(value: T) { contents = value }
       
def get: T = contents
}

Reference類具有一個叫做T的類型參數(shù)來表示他說引用的對象的類型。這個類型在Reference中作為了變量和函數(shù)的參數(shù)或者返回類型。

上面的代碼還演示了Scala中變量的表達(dá)方式,這個無需更多的解釋大家都能清楚。不過值得注意的是我們給他賦予的初始值:_ ,這個表示一個默認(rèn)值,對于數(shù)字類型來說是0,對于boolean來說是false,對于Unit(函數(shù)簽名)來說是() (無參數(shù)無返回),對于其他來說是null。

要使用這個Reference 類,你需要制定他的類型參數(shù),來告知這個引用到底引用了什么類型。例如要創(chuàng)建一個指向Int的引用,你可以這么寫:

object IntegerReference {
       
def main(args: Array[String]) {
                val cell
= new Reference[Int] cell.set(13)
                println
("Reference contains the half of " + (cell.get * 2))
       
}
}

就像我們看到的,我們不需要吧get的返回值強(qiáng)制轉(zhuǎn)換成Int,而且由于它被聲明成Int,你不可能在這個引用中放置其他類型的對象。

9 結(jié)語

本文簡要介紹了Scala語言的一些特性,并且同時展示了若干實(shí)例。有興趣的讀者可以繼續(xù)閱讀本文的姊妹篇:《Scala By Example》,該文覆蓋了Scala的更多的高級特性。如果需要還可以去閱讀《Scala Language Specification》。

【相關(guān)閱讀】

  1. Scala的Trait:可以包含代碼的接口
  2. Scala的模式匹配和條件類
  3. Scala類:復(fù)數(shù)類,無參方法,繼承和覆蓋
  4. 萬物皆對象:介紹Scala對象
  5. Scala入門:Scala例子,以及如何與Java交互
責(zé)任編輯:yangsai 來源: Google Code
相關(guān)推薦

2021-02-08 11:20:27

Java類型數(shù)組

2020-02-21 08:18:58

JavaScala編程語言

2009-06-10 14:43:19

Scala泛型Scala編程語言

2022-03-28 08:36:15

tenacityPython

2014-04-15 16:01:00

Java8泛型

2021-09-29 18:17:30

Go泛型語言

2009-08-24 17:07:09

C# 泛型

2021-05-10 07:38:09

Swift 泛型Tips

2009-12-24 09:16:11

C#泛型

2021-10-25 15:05:47

大數(shù)據(jù)貨幣大數(shù)據(jù)分析

2012-06-12 10:23:19

直流數(shù)據(jù)中心

2024-06-06 09:23:11

2023-12-07 11:12:54

大型語言模型Gemini人工智能

2021-01-14 05:20:48

Go語言泛型

2025-03-26 05:00:00

前端開發(fā)者DOM

2021-06-17 06:51:32

Java泛型Java編程

2025-04-14 08:49:10

2017-03-06 16:51:52

Java泛型實(shí)現(xiàn)

2009-06-24 10:25:25

C#泛型

2009-08-25 14:03:17

點(diǎn)贊
收藏

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