标签:模式匹配 输出 方法 extend lin for 除了 name amp
Thread.`yield`()
反引号除了用于命名标识符,还可以在调用方法时避免冲突(yield
为 Scala 关键字,但也是 Thread
的方法)a to b
实际是 a.to(b)
+, -, !, ~
四个可当做前缀运算符使用,-a
实际是 a.unary_
a identifier
a 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.dynamics
scala.Dynamic
foo.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.close
scala.io.StdIn
Source.fromURL(url, "UTF-8")
Source.fromString("Hello ww")
@SerialVerionUID(42L) class Name extends Serializable
Serializable
为 Scala 中的 trait
scala.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.Regex
val pattern = "[0-9]+".r
"""
,val pattern = """\s+[0-9]+\s+""".r
val patternName = "([0-9]+) ([a-z]+)".r
val pattern(num, item) = "123 abc"
(patternName
与定义的正则名一致)Scala Operators, File & RegExp
标签:模式匹配 输出 方法 extend lin for 除了 name amp
原文地址:https://www.cnblogs.com/yuanzam/p/11614838.html