- val str = "international"
- val x1 = str.indexOf('a')
- val x2 = str indexOf 'a'
- val str = "international"
- val x3 = str.substring(2, 4)
- val x4 = str substring (2, 4) // 如果参数有多个,需要用小括号包起来
- val str = "international"
- val x5 = str.toUpperCase()
- val x6 = str.toUpperCase // 方法调用时如果不需要传入任何参数,小括号可以省略
- val x7 = str toUpperCase // 这种写法,如果没有参数,则括号不用写
1. import scala.language.postfixOps
2. val str = "international"
3. val x5 = str.toUpperCase()
4. val x6 = str.toUpperCase // 方法调用时如果不需要传入任何参数,小括号可以省略
5. val x7 = str toUpperCase // 这种写法,如果没有参数,则括号不用写
运算符在唯一的操作数之前 :-1、+3、 ~0xFF、!false
-1等同于1.unary_-,前缀运算符如同中缀运算符一样,也是方法调用的另一种方式,不同的是,方法名要在符号前加上前缀unary_ 。
能作为前缀运算符的运算符只有+、-、!、~四种。如果你自己定义了unary_!方法就可以使用!前缀运算符来调用方法了,但是即使你定义了unary_*,也不能用来调用该方法,因为不是四种可用的前缀运算符之一。
由于Scala并没有真正的运算符,运算符其实是方法的一种形式,所以此处运算符的优先级,其实就是指方法的优先级。在Scala中方法的执行是有优先级的区别的,这也是为了解决传统运算符优先级问题。
例如:3 + 2 * 5,我们期望获得的是13,但是根据Scala特点,Scala中所有运算符其实就是方法,那么按照这种说法,表达式应该等同于(3).+(2) 得到5,(5).*(5) 得到25,与我们的预期不符!Scala如何解决此问题呢?靠的是运算符优先级。
[https://howard2005.blog.csdn.net/article/details/129120352?spm=1001.2014.3001.5502]