scala中cannot resolve symbol println_Scala简明教程

本教程适合有一定编程经验的开发者,详细介绍了Scala的基础知识,包括安装Scala、REPL的使用、基本语法、函数、流程控制、数据结构、面向对象编程、模式匹配、函数式编程和输入输出。特别关注了'cannot resolve symbol println'的问题,帮助初学者理解并解决常见错误。
摘要由CSDN通过智能技术生成

c9b374a74ce542c2966ffc0809674599.png

阅读说明

  1. 本教程面向有一定编程经验的开发者。
  2. 本教程预计花费30min

语言说明

scala是基于java开发的,结合了面向对象编程技术及函数式编程技术。scala的静态类型避免了复杂程序的大部分BUG。它的JVM和Js运行环境让你可以构建高性能系统。

开始

0. 基础

0.1 设定Scala

  1. 下载Scala - http://www.scala-lang.org/downloads
  2. 把包解压到你喜欢的目录,并把目录加入环境变量
  3. 命令行查看版本
scala -version

0.2 尝试REPL

Scala有一个命令行叫做REPL,可以实现交互式编程。命令行键入scala,进入交互式编程环境。

$ scala
scala>

// 默认情况下每个键入的表达式都将保存为一个新的类型。
// 注意在Scala中只有对象类型,Int也为对象。
scala> 2 + 2
res0: Int = 4

// 默认值可以被重用,注意结果显示变量的类型。
// res1值类型为Int,值为6
scala> res0 + 2
res1: Int = 6

// Scala是一个强类型语言。
// 可以使用type指令在不执行表达式情况下检查表达式类型。
scala> :type (true, 2.0)
(Boolean, Double)

// REPL会话可以保存到本地目录
scala> :save /sites/repl-test.scala

// 可以使用load指令加载scala文件
scala> :load /sites/repl-test.scala
Loading /sites/repl-test.scala...
res2: Int = 4
res3: Int = 6

// 可以使用h指令检查最近的输入历史
scala> :h?
1 2 + 2
2 res0 + 2
3 :save /sites/repl-test.scala
4 :load /sites/repl-test.scala
5 :h?

已经学会交互式编程了,现在开始学一点scala。

1. 基本语法

// 这是单行注释

/*
  这是多行注释
*/

// 打印,并换行
println("Hello world!")
println(10)
// Hello world!
// 10

// 打印,不换行
print("Hello world")
print(10)
// Hello world10

// 变量声明使用var或者val.
// val声明变量不可变的,var声明变量可变。
val x = 10 // x是10
x = 20     // 报错
var y = 10
y = 20     // y现在是20

Scala是一个静态类型语言,注意到在上述声明中我们并没有指定类型。这是因为Scala具有类型推断的功能。大部分情况下Scala编译器可以推断变量的类型,所以可以不用每次都显示声明变量。以下是显示声明变量:

val z: Int = 10
val a: Double = 1.0

// 注意表达式自动从Int转换为Double, 结果是10.0,而不是10
val b: Double = 10

// Boolean值
true
false

// Boolean操作
!true         // false
!false        // true
true == false // false
10 > 5        // true

// 常规操作
1 + 1   // 2
2 - 1   // 1
5 * 3   // 15
6 / 2   // 3
6 / 4   // 1
6.0 / 4 // 1.5
6 / 4.0 // 1.5

"Scala字符串通过双引号括起来"//String
'a' // a 是一个Scala 字符
// '单引号字符串并不存在

// Strings对象有常用的Java字符串对象的方法。 
"hello world".length
"hello world".substring(2, 6)
"hello world".replace("C", "3")

// Strings对象有额外的Scala方法. 
"hello world".take(5)
"hello world".drop(5)

// 支持字符串插值,注意前缀"s"
val n = 45
s"We have $n apples" // => "We have 45 apples"

// 插值字符串支持表达式
val a = Array(11, 9, 6)
s"My second daughter is ${a(0) - a(2)} years old."    
// => "My second daughter is 5 years old."
s"We have double the amount of ${n / 2.0} in apples." 
// => "We have double the amount of 22.5 in apples."
s"Power of 2: ${math.pow(2, 2)}"                      
// => "Power of 2: 4"

// 使用f前缀实现格式化版本插值字符串
f"Power of 5: ${math.pow(5, 2)}%1.0f"  
// "Power of 5: 25"
f"Square root of 122: ${math.sqrt(122)}%1.4f" 
// "Square root of 122: 11.0454"

// 原生字符串,忽略特殊字符,使用raw前缀
raw"New line feed: n. Carriage return: r." 
// => "New line feed: n. Carriage return: r."

// 有些字符如"需要使用转义
"They stood outside the "Rose and Crown"" 
// => "They stood outside the "Rose and Crown""

// 三个双引号实现字符串多行编写
val html = """<form id="daform">
                <p&g
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值