日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

2021年大数据常用语言Scala(四):基础语法学习 声明变量

發(fā)布時(shí)間:2023/11/28 生活经验 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2021年大数据常用语言Scala(四):基础语法学习 声明变量 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

聲明變量

語(yǔ)法格式

在解釋器中定義一個(gè)變量

val和var變量

使用類(lèi)型推斷來(lái)定義變量

?惰性賦值


聲明變量

我們將來(lái)每一天編寫(xiě)scala程序都會(huì)定義變量。那scala語(yǔ)言如何定義變量呢?

語(yǔ)法格式

Java變量定義

int?a =?0;

在scala中,可以使用val或者var來(lái)定義變量,語(yǔ)法格式如下:

val/var?變量標(biāo)識(shí):變量類(lèi)型 =?初始值

其中

  • val定義的是不可重新賦值的變量
  • var定義的是可重新賦值的變量

[!NOTE]

  • scala中定義變量類(lèi)型寫(xiě)在變量名后面
  • scala的語(yǔ)句最后不需要添加分號(hào)

在解釋器中定義一個(gè)變量

示例:定義一個(gè)變量保存一個(gè)人的名字"tom"

步驟

打開(kāi)scala解釋器

定義一個(gè)字符串類(lèi)型的變量用來(lái)保存名字

參考代碼

scala>?val?name:String =?"tom"
name:?String =?tom

val和var變量

示例

給名字變量進(jìn)行重新賦值為Jim,觀察其運(yùn)行結(jié)果

參考代碼

scala>?name =?"Jim"
<console>:12:?error:?reassignment to valname =?"Jim"

示例

使用var重新定義變量來(lái)保存名字"tom",并嘗試重新賦值為Jim,觀察其運(yùn)行結(jié)果

參考代碼

scala>?var?name:String =?"tom"
name:?String =?tomscala>?name =?"Jim"
name:?String =?Jim

[!TIP]

優(yōu)先使用val定義變量,如果變量需要被重新賦值,才使用var

使用類(lèi)型推斷來(lái)定義變量

Scala的語(yǔ)法要比Java簡(jiǎn)潔,我們可以使用一種更簡(jiǎn)潔的方式來(lái)定義變量。

示例

使用更簡(jiǎn)潔的語(yǔ)法定義一個(gè)變量保存一個(gè)人的名字"tom"

參考代碼

scala>?val?name =?"tom"
name:?String =?tom

Scala可以自動(dòng)根據(jù)變量的值來(lái)自動(dòng)推斷變量的類(lèi)型,這樣編寫(xiě)代碼更加簡(jiǎn)潔。

?惰性賦值

在企業(yè)的大數(shù)據(jù)開(kāi)發(fā)中,有時(shí)候會(huì)編寫(xiě)非常復(fù)雜的SQL語(yǔ)句,這些SQL語(yǔ)句可能有幾百行甚至上千行。這些SQL語(yǔ)句,如果直接加載到JVM中,會(huì)有很大的內(nèi)存開(kāi)銷(xiāo)。如何解決?

當(dāng)有一些變量保存的數(shù)據(jù)較大時(shí),但是不需要馬上加載到JVM內(nèi)存。可以使用惰性賦值來(lái)提高效率。

語(yǔ)法格式:

lazy?val/var?變量名 =?表達(dá)式

示例

在程序中需要執(zhí)行一條以下復(fù)雜的SQL語(yǔ)句,我們希望只有用到這個(gè)SQL語(yǔ)句才加載它。

"""insert overwrite table adm.itcast_adm_personasselecta.user_id,a.user_name,a.user_sex,a.user_birthday,a.user_age,a.constellation,a.province,a.city,a.city_level,a.hex_mail,a.op_mail,a.hex_phone,a.fore_phone,a.figure_model,a.stature_model,b.first_order_time,b.last_order_time,...d.month1_hour025_cnt,d.month1_hour627_cnt,d.month1_hour829_cnt,d.month1_hour10212_cnt,d.month1_hour13214_cnt,d.month1_hour15217_cnt,d.month1_hour18219_cnt,d.month1_hour20221_cnt,d.month1_hour22223_cntfrom gdm.itcast_gdm_user_basic aleft join gdm.itcast_gdm_user_consume_order b on a.user_id=b.user_idleft join gdm.itcast_gdm_user_buy_category c on a.user_id=c.user_idleft join gdm.itcast_gdm_user_visit d on a.user_id=d.user_id;"""

參考代碼

scala>?lazy?val?sql =?"""insert overwrite table adm.itcast_adm_personas| ????select| ????a.user_id,
....| ????left join gdm.itcast_gdm_user_buy_category c on a.user_id=c.user_id| ????left join gdm.itcast_gdm_user_visit d on a.user_id=d.user_id;"""
sql:?String =?<lazy>

總結(jié)

以上是生活随笔為你收集整理的2021年大数据常用语言Scala(四):基础语法学习 声明变量的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。