首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Scala语言入门

Scala语言入门

作者头像
码客说
发布2022-04-20 09:26:11
发布2022-04-20 09:26:11
8090
举报
文章被收录于专栏:码客码客

前言

学习Scala之前我们先看一个简单的例子

Java

代码语言:javascript
复制
List<Product> products = new ArrayList<Product>();
for (Order order : orders) {
  products.addAll(order.getProducts());
}

Scala 的:

代码语言:javascript
复制
def products = orders.flatMap(o => o.products)

甚至可以更简洁:

代码语言:javascript
复制
def products = orders.flatMap(_.products)

这样我们就可以看出Scala可以写更少的代码来实现同样的功能。

下载

https://www.scala-lang.org/download/2.13.8.html

或者

链接:https://pan.baidu.com/s/1r8qjJ2fE4yqBF82YBIqvHg 提取码:psvm

选择MSI包

注意安装路径不能有空格否则报错

此时不应有 \scala\bin..\lib\jline-3.21.0.jar。

测试是否可用

代码语言:javascript
复制
scala -version

IDEA安装插件

安装后重启IDEA

创建项目

项目上右键

添加Scala SDK

添加我们的测试类

代码如下

代码语言:javascript
复制
package cn.psvmc

object Test {
  def main(args: Array[String]): Unit = {
    val str: String = "Hello Scala"
    print(str)
  }
}

语法

get/set

代码语言:javascript
复制
class User {
  private var _age = 0;

  // get方法
  def age: Int = _age

  // set方法
  def age_=(a: Int): Unit = {
    _age = a
  }
}

测试

代码语言:javascript
复制
object Test {
  def main(args: Array[String]): Unit = {
    var u = new User()
    u.age = 3
    println(u.age)
  }
}

构造器

代码语言:javascript
复制
class User {
  private var name = ""
  private var age = 0

  def this(name: String) {
    this()
    this.name = name
  }

  def this(name: String, age: Int) {
    this(name)
    this.age = age
  }

  def info(): Unit = {
    printf("name:%s age is %d\n", name, age)
  }
}

测试

代码语言:javascript
复制
object Test {
  def main(args: Array[String]): Unit = {
    var u = new User("小明", 18)
    u.info()
  }
}

单例

代码语言:javascript
复制
object IDGenerator {
  private var id = 0;

  def newID(): Int = {
    id += 1
    id
  }
}

测试

代码语言:javascript
复制
object Test {
  def main(args: Array[String]): Unit = {
    println(IDGenerator.newID())
    println(IDGenerator.newID())
  }
}

遍历

代码语言:javascript
复制
object Test {
  def main(args: Array[String]): Unit = {
    // 遍历List
    val list = List(1, 2, 3)
    for (item <- list) {
      println("item:" + item)
    }

    //遍历Map
    val user = Map("name" -> "小明", "age" -> 18)
    println(user)
    // 方式1
    for ((k, v) <- user) {
      printf("Key:%s Value:%s\n", k, v)
    }
    //方式2
    user foreach {
      case (k, v) => printf("Key:%s Value:%s\n", k, v)
    }
  }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 下载
  • IDEA安装插件
  • 语法
    • get/set
    • 构造器
    • 单例
    • 遍历
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档