初探Scala

2019-12-15 0 条评论 156 次阅读 0 人点赞

如果今天让我在 Java 之外选一门语言,我会选 Scala。
----- James Gosling,Java 之父

出于好奇,我想看看 Scala 究竟是什么?

1. 安装Scala

1.1 官方推荐安装

官方提供两种方案:

  • 使用 sbt(Scala Build Tool)
    这个工具,类似于 Java 生态中的 Maven;有规定的目录结构(与Maven 90% 相同);

  • 直接安装 IDEA 的 Scala 插件

IEDA-Scala-plugin

1.2 个人建议

以上都是没有安装 Scala-SDK的,sbt 中编译时会自动下载,IDEA 中需要手工配置:File >> Project Structure >> Modules >> + >> Library

注意:如果系统没有安装 Scala-SDK,IDEA 可以单独下载;如果系统已安装,则会有多个版本选择:

个人建议:单独安装 Scala-SDK,方便直接在命令行,学习和验证语法。下载地址:Scala-lang 官网 --> Other Resources;

2. 小试牛刀

【需求】编写一个函数,判断字符串中是否含有大写字母?

2.1 Java 原始代码

实现代码:

public boolean hasUpperCase(String name) {
    boolean nameHasUpperCase = false;
    for (int i = 0; i < name.length(); ++i) {
        if (Character.isUpperCase(name.charAt(i))) {
            nameHasUpperCase = true;
            break;
        }
    }
    return nameHasUpperCase;
}

单元测试代码:(这里使用了Assertj的断言 强烈推荐

private UpperCaseDemo upperCaseDemo;
private String name = "Scala";

@Before
public void before() throws Exception {
    upperCaseDemo = new UpperCaseDemo();
}

@Test
public void testHasUpperCase() throws Exception {
    boolean actual = upperCaseDemo.hasUpperCase(name);
    Assertions.assertThat(actual).as(" Java 方法验证 - 字符串是否有大写字母 ").isEqualTo(true);

}

2.2 Java lambda 写法

Lambda 表达式,比较简洁,易读;

public boolean hasUpperCaseLambda(String name){
    return name.chars().anyMatch((int ch) -> Character.isUpperCase((char) ch));
}

2.3 Scala 写法

var name = "Scala"
name.exists(x => x.isUpper)
# 更简洁的写法:使用函数字面量 name.exists(_.isUpper)

是的,你没看错,就是这么简单。

掌柜

让未来超越过去!

文章评论(0)