Thread.`yield`() 反引号除了用于命名标识符,还可以在调用方法时避免冲突(yield 为 Scala 关键字,但也是 Thread 的方法)a to b 实际是 a.to(b)+, -, !, ~四个可当做前缀运算符使用,-a 实际是 a.unary_a identifiera operator= b 等价于 a = a operator b* / % > + - > : > < > > ! = > & > ^ > | > 非操作符 > 赋值操作符: 结尾的操作符
1 :: 2 :: Nil 实际是 1 :: (2 :: Nil)2 :: Nil 是 Nil.::(2)f(a,b,c) 调用时 f 不是函数或方法,则等价于 f.apply(a,b,c)
f(a,b,c) = value 则等价于 f.update(a,b,c, value);如针对 HashMap 的取值和赋值new 关键字unapply 方法的伴生对象,伴生对象可以定义成给任意类型做为提取器(如,为 String 自定义一个提取器 Name)case class 自动附带 apply 和 unapply 方法,在模式匹配中会自动调用unapplySeq 方法,返回 Option[Seq[Type]]
unapply 和 unapplySeq 的参数类型不要定义成一样的import scala.language.dynamicsscala.Dynamicfoo.method("blah") ~> foo.applyDynamic("method")("blah")foo.method(x = 1, 2) ~> foo.applyDynamicNamed("method")(("x", 1), ("", 2))foo.field ~> foo.selectDynamic("field")foo.varia = 10 ~> foo.updateDynamic("varia")(10)foo.arr(10) = 13 ~> foo.selectDynamic("arr").update(10, 13)foo.arr(10) ~> foo.applyDynamic("arr")(10)Source.fromFile({name/java.io.File}).getLines.toArray,关闭资源 source.closescala.io.StdInSource.fromURL(url, "UTF-8")Source.fromString("Hello ww")@SerialVerionUID(42L) class Name extends Serializable
Serializable 为 Scala 中的 traitscala.sys.process,包含隐式转换将 String 转为 ProcessBuilder"ls -l".!, ! 会执行 ProcessBuilder 并阻塞直到命令退出并返回退出码"ls -l".!! 会将输出作为字符串返回#| 管道: ("ls -l" #| "grep scala").!#> 重定向输出: ("ls -l" #> new File("out.txt")).!#>> 追加:("ls -l" #>> new File("out.txt")).!#< 重定向输入:
("grep scala" #< new File("out.txt")).!("grep html" #< new URL("http://baidu.com")).!Process("ls -l", new File("../"), ("LANG", "en_US")).!,环境变量为 (k, v) 序列ScriptEngine engine = new ScriptEngineManager().getScriptEngineByName("scala")scala.util.matching.Regexval pattern = "[0-9]+".r""",val pattern = """\s+[0-9]+\s+""".rval patternName = "([0-9]+) ([a-z]+)".rval pattern(num, item) = "123 abc" (patternName 与定义的正则名一致)Scala Operators, File & RegExp
原文:https://www.cnblogs.com/yuanzam/p/11614838.html