成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Scala入門(mén):Scala例子,以及如何與Java交互

開(kāi)發(fā) 后端
本文為初學(xué)Scala的Java開(kāi)發(fā)者提供了一個(gè)Scala例子(Hello world),并對(duì)Scala與Java交互的情況作了一些大致的介紹。

本文源自Michel Schinz和Philipp Haller所寫(xiě)的A Scala Tutorial for Java programmers,由Bearice成中文。下面先對(duì)Scala進(jìn)行一個(gè)簡(jiǎn)單的介紹,提供一個(gè)簡(jiǎn)單的Scala例子,并描述一下Scala與Java交互的情況。

51CTO編輯推薦:Scala編程語(yǔ)言專題

1 簡(jiǎn)介

本文僅在對(duì)Scala語(yǔ)言和其編譯器進(jìn)行簡(jiǎn)要介紹。本文的目的讀者是那些已經(jīng)具有一定編程經(jīng)驗(yàn),而想嘗試一下Scala語(yǔ)言的人們。要閱讀本文,你應(yīng)當(dāng)具有基礎(chǔ)的面向?qū)ο缶幊痰母拍睿绕涫荍ava語(yǔ)言的。

2 第一個(gè)Scala例子

作為學(xué)習(xí)Scala的第一步,我們將首先寫(xiě)一個(gè)標(biāo)準(zhǔn)的HelloWorld,這個(gè)雖然不是很有趣,但是它可以讓你對(duì)Scala有一個(gè)最直觀的認(rèn)識(shí)而不需要太多關(guān)于這個(gè)語(yǔ)言的知識(shí)。我們的Hello world看起來(lái)像這樣:

object HelloWorld {
       
def main(args: Array[String]) {
                println
("Hello, world!")
       
}
}

程序的結(jié)構(gòu)對(duì)Java程序員來(lái)說(shuō)可能很令人懷念:它由一個(gè)main函數(shù)來(lái)接受命令行參數(shù),也就是一個(gè)String數(shù)組。這個(gè)函數(shù)的唯一一行代碼把我們的問(wèn)候語(yǔ)傳遞給了一個(gè)叫println的預(yù)定義函數(shù)。main函數(shù)不返回值(所以它是一個(gè)procedure method)。所以,也不需要聲明返回類型。

對(duì)于Java程序員比較陌生的是包含了main函數(shù)的object語(yǔ)句。這樣的語(yǔ)句定義了一個(gè)單例對(duì)象:一個(gè)有且僅有一個(gè)實(shí)例的類。object語(yǔ)句在定義了一個(gè)叫HelloWorld的類的同時(shí)還定義了一個(gè)叫HelloWorld的實(shí)例。這個(gè)實(shí)例在第一次使用的時(shí)候會(huì)進(jìn)行實(shí)例化。

聰明的讀者可能會(huì)發(fā)現(xiàn)main函數(shù)并沒(méi)有使用static修飾符,這是由于靜態(tài)成員(方法或者變量)在Scala中并不存在。Scala從不定義靜態(tài)成員,而通過(guò)定義單例object取而代之。

2.1 編譯實(shí)例

我們使用Scala編譯器“scalac”來(lái)編譯Scala代碼。和大多數(shù)編譯器一樣,scalac 接受源文件名和一些選項(xiàng)作為參數(shù),生成一個(gè)或者多個(gè)目標(biāo)文件。scala編譯生成的產(chǎn)物就是標(biāo)準(zhǔn)的Java類文件。

假設(shè)我們吧上述代碼保存為文件HelloWorld.scala,我們使用下面的命令編譯它(大于號(hào)“>”表示命令提示符,你不必輸入它)

> scalac HelloWorld.scala

這將會(huì)在當(dāng)前目錄生成一系列.class文件。其中的一個(gè)名為HelloWorld.class 的文件中定義了一個(gè)可以直接使用scala命令執(zhí)行的類。下文中你可以看到這個(gè)例子。

2.2 運(yùn)行實(shí)例

一旦完成編譯,Scala程序就可以使用scala命令執(zhí)行了。scala的用法和java很相似,并且連選項(xiàng)也大致相同。上面的例子就可以使用下面的命令運(yùn)行,這將會(huì)產(chǎn)生我們所期望的輸出。

> scala -classpath . HelloWorld
Hello, world!

3 Scala與Java交互

Scala的一個(gè)強(qiáng)項(xiàng)在于可以很簡(jiǎn)單的于已有的Java代碼交互,所有java.lang中的類都已經(jīng)被自動(dòng)導(dǎo)入了,而其他的類需要顯式聲明導(dǎo)入。

來(lái)看看演示代碼吧。我們希望對(duì)日期進(jìn)行格式化處理,比如說(shuō)用法國(guó)的格式。

Java類庫(kù)定義了一系列很有用的類,比如Date和DateFormat。由于Scala于Java能夠進(jìn)行很好的交互,我們不需要在Scala類庫(kù)中實(shí)現(xiàn)等效的代碼,而只需直接吧Java的相關(guān)類導(dǎo)入就可以了:

import java.util.{Date, Locale} 
import java.text.DateFormat
import java.text.DateFormat._

object FrenchDate {
       
def main(args: Array[String]) {
                val now
= new Date
                val df
= getDateInstance(LONG, Locale.FRANCE)
                println
(df format now)
       
}
}

Scala的import語(yǔ)句看上去與Java的非常相似,但是它更加強(qiáng)大。你可以使用大括號(hào)來(lái)導(dǎo)入同一個(gè)包里的多個(gè)類,就像上面代碼中第一行所做的那樣。另一個(gè)不同點(diǎn)是當(dāng)導(dǎo)入一個(gè)包中所有的類或者符號(hào)時(shí),你應(yīng)該使用下劃線(_)而不是星號(hào)(*)。這是由于星號(hào)在Scala中是一個(gè)有效的標(biāo)識(shí)符(例如作為方法名稱)。這個(gè)例子我們稍后會(huì)遇到。

第三行的import語(yǔ)句導(dǎo)入了DataFormat類中的所有成員,這使得靜態(tài)方法getDateInstance和靜態(tài)變量LONG可以被直接引用。

在main函數(shù)中,我們首先建立了一個(gè)Java的Date實(shí)例。這個(gè)實(shí)例默認(rèn)會(huì)包含當(dāng)前時(shí)間。接下來(lái)我們一個(gè)使用剛才導(dǎo)入的靜態(tài)函數(shù)getDateInstance定義了日期格式。最后我們將使用DataFotmat格式化好的日期打印了出來(lái)。最后一行代碼顯示了Scala的一個(gè)有趣的語(yǔ)法:只有一個(gè)參數(shù)的函數(shù)可以使用下面這樣的表達(dá)式來(lái)表示:

df format now

其實(shí)就是下面的這個(gè)冗長(zhǎng)的表達(dá)式的簡(jiǎn)潔寫(xiě)法

df.format(now)

這看起來(lái)是一個(gè)語(yǔ)法細(xì)節(jié),但是它導(dǎo)致一個(gè)重要的后果,我們將在下一節(jié)進(jìn)行說(shuō)明。

另外,我們還應(yīng)當(dāng)注意到Scala中可以直接繼承或者實(shí)現(xiàn)Java中的接口和類。

看過(guò)了上面的Scala例子以及Scala與Java交互的方式,下文將介紹Scala的對(duì)象。

【相關(guān)閱讀】

  1. Scala開(kāi)發(fā)環(huán)境搭建與資源推薦
  2. Google App Engine上的Scala+Lift初試
  3. Scala初學(xué)者學(xué)習(xí)資料:main(String[])
  4. 影響Scala語(yǔ)言設(shè)計(jì)的因素列表
  5. 喜歡Scala編程的四個(gè)理由
責(zé)任編輯:yangsai 來(lái)源: Google code
相關(guān)推薦

2009-12-09 09:15:47

從Java走進(jìn)ScalTwitter API

2009-02-04 17:32:03

ibmdwJavaScala

2009-07-30 13:21:17

Scala入門(mén)Hello World

2010-09-14 13:22:17

Scala編程指南Scala

2009-08-21 16:17:25

ScalaTwitter API

2009-09-28 11:01:39

從Java走進(jìn)Scal

2020-02-21 08:18:58

JavaScala編程語(yǔ)言

2009-07-08 12:43:59

Scala ServlScala語(yǔ)言

2009-06-17 11:44:22

Scala控制結(jié)構(gòu)

2010-09-14 15:34:41

Scala

2009-09-28 10:38:57

Scala教程

2009-07-15 10:14:25

Scala并發(fā)性

2009-07-30 10:59:44

Scala和Erlan多核

2009-07-22 09:02:45

Scala組合繼承

2020-10-31 17:33:18

Scala語(yǔ)言函數(shù)

2009-06-16 17:54:38

Scala類語(yǔ)法語(yǔ)義

2009-02-05 17:28:01

ScalaFriendFeedXML

2009-11-16 17:04:46

Inside Scal

2009-07-22 09:31:59

Scala類類層級(jí)Java類

2009-09-07 18:14:55

Scala開(kāi)發(fā)環(huán)境
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 欧美成人精品一区二区男人看 | 日韩视频一区二区 | www.蜜桃av | 91精品国产乱码久久久久久久久 | 亚洲天堂久久 | 日本精品一区二区 | 成人中文字幕在线 | 国产精品久久久久久久久久久免费看 | 久草欧美视频 | 一区二区精品 | 免费成人高清在线视频 | 日韩精品免费 | 91av大全| 国产精品国产精品 | 午夜资源 | 国产电影一区二区在线观看 | 伊人伊人 | 久久精品久久久久久 | 国产精品高清一区二区 | 一区中文| 亚洲第一av网站 | 国产精品一区二区视频 | 国产乱码精品一区二区三区五月婷 | 色男人的天堂 | 久久在线看 | 日韩中文字幕在线视频观看 | 91精品国产91久久久久游泳池 | 精品国产乱码久久久久久图片 | 日韩视频成人 | 麻豆av电影网 | 午夜私人影院在线观看 | 久草视频网站 | 久久精品国产99国产精品 | 狠狠爱综合 | 欧美高清性xxxxhdvideosex | 超碰97人人人人人蜜桃 | 天堂在线网| 日韩一区二区三区在线播放 | 九七午夜剧场福利写真 | 国产福利视频 | 亚洲精品专区 |